如何解决LINQ使用EF Core选择并转换为派生类而不复制属性
我有一个LINQ可以从数据库中选择记录:
List<Companies> enabledCompanies;
using (var ctx = new NavigatorContextExt())
{
enabledCompanies = ctx.Companies
.Where(e => e.Enabled)
.ToList();
}
我有一个CompaniesExt
类派生的Companies
类,其中包含一些额外的属性,稍后再计算。我希望LINQ返回CompaniesExt
类。
我尝试了以下操作:
List<CompaniesExt> enabledCompanies;
using (var ctx = new NavigatorContextExt())
{
enabledCompanies = ctx.Companies
.Where(e => e.Enabled)
.Cast<CompaniesExt>()
.ToList();
}
但是我收到了InvalidCastException。这是不可能的吗?我只用LINQ选择CompaniesExt
并手动复制所有属性吗?
解决方法
从EF获得的实体的实际运行时类型为Company
,因此,不能,您无法将其神奇地转换为派生类。
但是不需要从一个实体派生只是添加一些属性。只需在实体本身中使用[NotMapped]
批注:
public class Company
{
public int CompanyID {get;set;}
// ... other DB properties
[NotMapped]
public string SomeProperty { get; set; }
}
如果生成了实体,则可以使用局部类来添加未映射的属性:
public partial class Company // other part in generated file
{
[NotMapped]
public string SomeProperty { get; set; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。