C# 初始化一个固有对象并得到错误“无法在 LINQ to Entities 查询中构造实体”

张尾

我已经阅读了这个答案The entity cannot be built in a LINQ to Entities query但仍然感到困惑。

var ProductAndBuildInfoList= (
    from p in db.Product
    join pbc in db.product_builds_children on p.BuildId equals pbc.BUILD_ID
    select new ProductAndBuildInfo {
        Id = p.Id,
        Name = p.name,
        BuildRequestId = pbc.BUILD_REQ_ID
    }
).ToList();

当我执行上述查询时,它抛出了异常

“无法在 LINQ to Entities 查询中构造实体”

这是两个ProductAndBuildInfoProduct

public class ProductAndBuildInfo : Product {
    public long BuildRequestId { get; set; }
}

public class Product {
    public long Id { get; set; }
    public string Name { get; set; }
}

我知道如果对象是映射实体,我们就不能构造它,那么构造从映射实体继承的新对象的正确方法是什么?将所有字段从上层类复制到下层类对我来说似乎是一种不干净的方式。

古鲁·斯特朗

将您的共享字段移至某个新类:

public class ProductBase {
    public long Id { get; set; }
    public string Name { get; set; }
}

然后从中继承实体和 DTO:

public class Product : ProductBase {
}

public class ProductAndBuildInfo : ProductBase {
    public long BuildRequestId { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在LINQ to Entities查询中构造实体

无法在LINQ to Entities查询中构造。错误

无法在LINQ to Entities查询中构造实体或复杂类型'CreditFacility_Web.Models.CreditFacilityModel.SavingsAccount'

System.NotSupportedException:'无法在LINQ to Entities查询中构造实体或复杂类型'Model'。

无法从数据库检索数据->错误->实体或复杂类型...无法在LINQ to Entities查询中构造

实体或复杂类型X不能在LINQ to Entities查询中构造

实体或复杂类型...不能在LINQ to Entities查询中构造

实体或复杂类型'WebProject.Data.Value'不能在LINQ to Entities查询中构造。“,

实体或复杂类型不能在LINQ to Entities查询中构造吗?

实体或复杂类型'FPSDB_newModel.Form_Attachment'不能在LINQ to Entities查询中构造

使用不在数据库中的实体对象进行 LINQ 查询 - 错误:LINQ to Entities 无法识别该方法

显示来自两个表的数据(无法在LINQ to Entities查询中构造。)

Linq to Entities:参数化的原始Sql查询?

查询基本实体以使用Linq to Entities检索所有派生实体的数据

在LINQ to Entities中过滤一对多

该类型出现在单个LINQ to Entities查询中的两个结构不兼容的初始化中

该类型出现在单个 LINQ to Entities 查询中的两个结构不兼容的初始化中

实现IEnumerable'System.Collections.Generic.List`1'的类型无法在LINQ to Entities查询中初始化

错误:LINQ to Entities 中仅支持无参数构造函数和初始值设定项

LINQ to Entities无法识别该方法-实体框架和DDD

C#LINQ to Entities无法识别方法“布尔”

LINQ to Entities仅支持无参数的构造函数和初始化程序

f#:LINQ to Entities仅支持无参数构造函数和初始化程序

进行版本检查时,LINQ to Entities错误仅支持无参数的构造函数和初始化程序

Linq to Entities查询中的.include().Where()

在Linq to Entities查询中编写if else else

在Linq to Entities查询中创建null枚举

LINQ to Entities无法识别MVC中的方法错误

为什么对Linq to Entities的一对多查询这么慢?