私はこの記事をフォローしていますhttp://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities .aspx
具体的には、「関連エンティティを明示的に読み込むときにフィルターを適用する」というタイトルのセクション。
私は次のようなことをする必要があります:
db.Configuration.LazyLoadingEnabled = false;
var class = db.Classes.Find(1);
db.Entry(class).Collection(c => c.Students).Query().Where(s => s.grade > 2.0).Load();
これをステップ実行して SQL プロファイラーを見ると、クラスをロードするクエリが表示されます。その後、Students をロードするクエリが表示されますが、class.Students は入力されず、null のままです。ただし、学生のクエリを SQL プロファイラーからコピーして自分で実行すると、適切な学生が返されます。Entity Framework は学生のクエリを実行して適切な結果を返しているようですが、それらをクラス オブジェクトにアタッチしていないようです。
これを回避する方法はありますが、手順を間違えたのか、.Load() を適切に使用していないのか疑問に思っています。