2
オブジェクトの実装に基づいて特定のORMLメソッドを拡張したいと考えています。例えば、クラス・インタフェースに基づくカスタムormlite問合せの実装
私はインターフェイスがあります。
public interface IHaveTimestamps
{
DateTime CreatedOn { get; set; }
DateTime UpdatedOn { get; set; }
}
今私はT
がIHaveTimestamps
を実装し、Tの他のインスタンスのために、それはデフォルトの動作に基づいてInsert
を実行する必要がある場合にのみ、Db.Insert<T>()
メソッドをオーバーライドしたいのですが。
これは私がCreatedOnとUpdatedOnの値を手動で設定するのではなく、どこでも手動で設定できるようにするためです。
Insert/Updateメソッドをオーバーロードしてモデルからインターフェイスを継承し、すべてのDB操作が自動的に処理されるようにするか、何かをする必要があるようにすることができますこのように:
public static class DbExtensions
{
public static long MyInsert<T> (this IDbConnection dbConn, T obj, bool selectIdentity = false) where T : IHaveTimestamps {
obj.CreatedOn = DateTime.UtcNow;
obj.UpdatedOn = DateTime.UtcNow;
return dbConn.Insert<T>(obj);
}
public static long MyUpdate<T> (this IDbConnection dbConn, T obj) where T : IHaveTimestamps {
obj.UpdatedOn = DateTime.UtcNow;
return dbConn.Update<T>(obj);
}
}
これはsoooooooooooスマートです! – labilbe
非常にクール、ありがとう! – vonec
@mythzユーザー/テナントIDによって自動的にフィルタリングされるクエリを実装できるように、これらのフィルタにRequestオブジェクトを挿入することが可能です。 – vonec