エンティティフレームワークLINQプロジェクションエラー:「エンティティインスタンスを作成できません」
エンティティフレームワークを使用してLINQをエンティティ(LINQからエンティティ)に使用する場合、特定の予測ルールに従うことが重要です。 LINQクエリ内で直接新しいエンティティインスタンスを作成しようとすると、一般的なエラーが発生します。 このシナリオを検討してください。
テーブルからプロパティのみを選択するように設計されたクエリは、「エンティティインスタンス」エラーを作成できません」エンティティに投影しようとした場合。
Name
コアの問題は、マッピングされたエンティティ(Product
など)に直接投影することは許可されていないことです。 ソリューションには、匿名タイプまたはデータ転送オブジェクト(DTO)のいずれかに投影することが含まれます。
Product
Product
このアプローチは、匿名タイプを使用して、選択したプロパティを保持します。
投影にDTOSを使用:<code class="language-csharp">public IQueryable<object> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new { Name = p.Name }; }</code>
Name
クラスは、投影データを受信するための構造化された方法を提供します。 これは一般に、タイプの安全性と保守性を向上させるために好まれます。 匿名タイプまたはDTOを使用することにより、LINQクエリ内のエンティティの作成に対する制限をバイパスし、柔軟なカスタムプロジェクションを有効にします。
以上がプロジェクション中にLINQがエンティティに「エンティティを構築できない」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。