我已经阅读了这个答案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 查询中构造实体”
这是两个ProductAndBuildInfo
和Product
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] 删除。
我来说两句