GetFoo().Count()
をDBクラス以外のメソッドから呼び出すと、Entity Framework 5はCOUNTではなくむしろ非効率なSELECTクエリを実行します。 thisのようないくつかの質問を読んで、これが期待される動作であることがわかります。私はそのため正しくCOUNTクエリを実行私のDBクラスにカウント方法を追加しましたエンティティフレームワーク - SELECTではなくCOUNT
public IEnumerable<DbItems> GetFoo()
{
return context.Items.Where(d => d.Foo.equals("bar"));
}
:複数回のクエリ指定から私を保存するには
public int GetFooCount()
{
return context.Items.Where(d => d.Foo.equals("bar")).Count();
}
を、私はこれを変更したいのですが以下のとおりです。ただし、これはDBクラス内にあってもSELECTを再度実行します。なぜこれが - そしてどうすればそれを避けることができますか?あなたはIEnumerable<T>
とIQueryable<T>
の拡張機能の違いを理解する必要があり、この動作を理解するために
public int GetFooCount()
{
return this.GetFoo().Count();
}
Context.Items.Count(D => d.Foo == "バー");あなたはどこに電話が必要ではありません:) –