2016-06-28 6 views
1

は、次のクエリを考えると?繰延LINQ(?または即時)実行

GetAll()方法はIQueryableを返しますが、第二と第三SELECT文でFirstOrDefault()ToList()は、データベース呼び出しをトリガーするのでしょうか?

ご協力いただければ幸いです。

+0

申し訳ありませんが、私はそれが私が思ったより少し複雑だと分かったので、私の答えを削除しました。しかし、コードを実行してデータベースログをチェックしたり、コードをデバッグしたりするだけで、答えを得ることができると思います。 –

+0

私は@RenéVogtに同意しますが、あなたの特定のクエリを実際にテストするのは簡単ではありませんでしたが、私の回答で述べたように、ログにはクエリに関連付けられている呼び出しの数が示されます – chandler

答えて

3

あなたが複数のコールを生成するとの懸念がある場合、私は、クエリ

例の最後に.Future()を追加することにより、一緒にあなたができるバッチクエリをEntityFramework Extensions

を使用することを検討します:

db.BlogPosts.Where(x => x.Category.Any(y => y.Name.Contains("EntityFramework"))).Future(); 

あなたの質問に答えるには、これらを組み合わせてデータベースへの1回の呼び出しにすることができます。

SQL /バッチ処理を確認するには、あなたもあなたのクエリの前にこれを含めることができます。

db.Database.Log = s => System.Diagnostics.Debug.WriteLine($"SQL: {s}"); 

とログは出力ウィンドウに表示されます。

関連する問題