> 实体框架linq投影错误:“无法创建实体实例”
在将LINQ与实体框架中使用LINQ(LINQ-TO-ENTITY)时,遵循特定投影规则至关重要。 尝试直接在LINQ查询中创建新实体实例时会出现一个常见错误。
考虑以下方案:一个旨在仅选择>表的属性属性的查询,如果它试图将其项目投影到Name
> entity。
Product
核心问题是不允许直接投影到映射的实体上(例如Product
)。 该解决方案涉及投影到匿名类型或数据传输对象(DTO)。
>使用匿名类型进行投影:Product
此方法使用匿名类型保存所选属性。
<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中文网其他相关文章!