作業単位 + リポジトリ パターンで EF4.3 を使用しています。
他のメソッドのベースとして機能するメソッドがあります。コードは次のようになります。
これは私の「基本」メソッドです:
public static IQueryable<Deal> FindActive()
{
var r = new ReadRepo<Deal>(Local.Items.Uow.Context);
return r.Find(d =>
d.ActiveFrom <= DateTime.Now &&
(d.ActiveUntilComputed == null || d.ActiveUntilComputed > DateTime.Now) &&
d.Published);
}
基本メソッドを呼び出すメソッドの 1 つを次に示します。
public static IQueryable<Deal> FindActiveByStore(int storeId)
{
Guard.Default(storeId, "storeId");
return FindActive().Where(d => d.StoreId == storeId);
}
でわかるようにFindActiveByStore
、まず を呼び出しFindActive
、次に をチェーンしFind()
ます。FindActive の後に a が続きWhere()
、2 番目の述語を追加します (用語の言い訳)。
FindActive
を使用する代わりに述語を渡すことができるWhere()
かどうか、実際にパフォーマンスの点で違いがあるかどうか疑問に思いました。
このような:
FindActive(d => d.StoreId == storeId)
FindActive はすでに述語を渡しているFind()
ため、両方を組み合わせる必要があります。
私が返す答えは、努力やパフォーマンスの点で「それは価値がない」という線に沿っていると思いますが、とにかく専門家に聞いてみようと思いました.