linq to Entities:クエリでマッピングされたエンティティの構築
この記事では、LINQからエンティティクエリ内のマッピングされたエンティティにカスタム選択を投影しようとするときに発生した一般的なエラーに対処します。 問題の理解エラー「エンティティはLINQからエンティティクエリで構築できません」というエラーは、Queryの例と説明:Product
select
このコードスニペットを検討してください:
これは、プロパティのみを含む新しい
オブジェクトを作成しようとします。 Linq to Entitiesは、データモデルで定義されているようにエンティティのすべてのプロパティを埋める必要があるため、これを効率的なデータベースクエリに直接変換することはできません。
<code class="language-csharp">public IQueryable<product> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new Product { Name = p.Name }; }</code>ソリューション:匿名タイプとdtos
Product
これを解決するには、匿名タイプまたはデータ転送オブジェクト(DTO)のいずれかを使用してください:Name
Product
匿名タイプ:必要なプロパティのみを含む匿名タイプへのプロジェクト:
これは、匿名オブジェクトの
<code class="language-csharp">public IQueryable GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new { Name = p.Name }; }</code>
IQueryable
このアプローチは、Name
オブジェクトの強いタイプの結果セットを提供します。 特に複雑なデータ構造を扱う場合、コードの保守性と読みやすさを向上させるには、一般にDTOを使用することが好まれます。
以上がLINQにマッピングされたエンティティをエンティティクエリに作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。