私はデータベースにアクセスするために、Entity Framework 4.2(コードファースト)を使用しています。私は、SingleOrDefault
を使用してエンティティにクエリを実行した場合、エンティティがまだトラッキングされていない場合にのみデータベースにクエリを実行することを前提としていましたが、このようには見えません。一方、Find
メソッドはこれを行うように見えます。 Find
の問題は、関連するデータを読み込むことができないように見えることです。エンティティフレームワークコードファーストファインドとシングルオードバウンド(Eager Loading)
Find
メソッドを使用する方法はありますか?例として、私はこの本とそのレビューをすべてロードしたい:私は使用して本を得るとき、私はレビューを読み込むことができますSingleOrDefault
で
// Load book from the database
Book book = context.Books.Find(1);
context.Entry<Book>(book).Collection<Review>.Load(); // Book.Reviews is now populated
// Load book from the change tracker
// This will include all Reviews as well
Book book2 = context.Books.Find(1);
を含める:
// Load book + reviews from the database
Book book = Book.Include("Reviews").SingleOrDefault(b => b.Id == 1);
// Doing the same thing again requeries the database
Book book2 = Book.Include("Reviews").SingleOrDefault(b => b.Id == 1);
方法にはあります熱心な負荷のFind
の動作をSingleOrDefault
にしますか?
このローカルプロパティが存在しないと考えていませんでした。ありがとう! – Dismissile
こんにちは、操作の速度に関して、Find to SingleOrDefaultはエンティティ情報を取得しますか? – Patrick