チャレンジ:エンティティフレームワークコアでInclude
を使用する場合、ネストされたナビゲーションプロパティ内のプロパティに基づいてプライマリクエリをフィルタリングするのは難しい場合があります。このガイドはソリューションを提供します
ソリューション:レバレッジフィルタリングに含まれる エンティティフレームワークコア5導入
フィルタリングされた は、含まれているナビゲーションプロパティのフィルタリングを可能にする強力な機能です。 サポートされているオペレーターには、、Where
/OrderBy
、OrderByDescending
、およびSkip
。Take
が含まれます
フィルタリングの実装には、以下が含まれます 例:を説明しましょう
このクエリはブログとそれに関連する投稿を取得しますが、著者の名前が「私」である投稿のみが含まれています。メソッド内の
句に注意してください<code class="language-csharp">var blogs = context.Blogs .Include(blog => blog.Posts.Where(post => post.Author == "me")) .ThenInclude(post => post.Author) .ToList();</code>
主要な考慮事項:Where
Include
ナビゲーションプロパティごとに1つのフィルターのみが許可されています。 独立した既知:
Include
。 フィルタリングされたインクルードと投影:
投影は一般に、
ステートメントを無視します。 ただし、投影内のエンティティにを適用できる場合でも、適用されます。
以上がエンティティフレームワークコアに含まれるナビゲーションプロパティをフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。