サイトを持つ単純な DB があり、各サイトには多数の投稿があります。
特定のサイトのすべての「公開」投稿を取得しようとしています (すでに EF によってもたらされたインスタンスである site という変数があります)
最初の明らかなことは次のとおりです。
var posts = from post in site.Posts
where post.Public == true
orderby post.PublicationTime descending
select post;
これは私が望むものをもたらしますが、SQL Server Profiler を見ると、WHERE のみがサイトではなく Public フィールドをフィルタリングしています。実際、Profiler がキャプチャしたクエリを SQL Server で実行すると、実際にすべてのサイトからすべての投稿が返されます (これは後で ASP.Net 側で明らかにフィルタリングされます)。
それから私は試しました:
var posts = from post in db.Posts
where post.Site == site && post.Public == true
orderby post.PublicationTime descending
select post;
同じ結果です。
私はここで根本的に愚かなことをしていますか?
Entity Framework は常にクライアント側でフィルターをかけますか?
ありがとう!
ダニエル