C# 无法在LINQ to>实体查询中构造实体或>复杂类型“ChildAccessory”
我想我理解以下错误,但我不确定如何修复它 类名:System.NotSupportedException,消息:实体或 无法在LINQ to中构造复杂类型“ChildAccessory” 实体查询 我应该创建一个DTO并从存储库返回它来修复问题,还是有更好的修复方法 我试图获取子附件,但也包括父表中的默认附件C# 无法在LINQ to>实体查询中构造实体或>复杂类型“ChildAccessory”,c#,entity-framework,linq,entity-framework-6,C#,Entity Framework,Linq,Entity Framework 6,我想我理解以下错误,但我不确定如何修复它 类名:System.NotSupportedException,消息:实体或 无法在LINQ to中构造复杂类型“ChildAccessory” 实体查询 我应该创建一个DTO并从存储库返回它来修复问题,还是有更好的修复方法 我试图获取子附件,但也包括父表中的默认附件 public class ChildAccessoryRepository: IChildAccessoryRepository { private readonly Equipment
public class ChildAccessoryRepository: IChildAccessoryRepository {
private readonly EquipmentContext _context;
public DirectoryEquipmentRepository(EquipmentContext context) {
_context = context;
}
public IEnumerable < ChildAccessory > GetChildAccessories(Guid clientReference) {
var accessories = from a in _context.Accessory
join ca in _context.ChildAccessory
on new {
AccessoryId = a.Id, ClientReference = clientReference
}
equals new {
ca.AccessoryId, ca.ClientReference
}
into ca_join
from ca in ca_join.DefaultIfEmpty()
where
ca.IsActive == true ||
ca.IsActive == null
//select ca;
select new ChildAccessory
{
AccessoryId = ca.AccessoryId,
SomeOtherColumn = ca.SomeOtherColumn,
Accessory = ca.Accessory,
});
}
}
ChildAccessory是否有无参数构造函数?不允许映射到EF中用作表的类型。ChildAccessority可能已经是上下文中的一个表。EF阻止您这样做,因为您可能会从数据库中获取无法跟踪的对象。您可以在选择后添加.AsNoTracking,也可以映射到匿名对象,然后执行.ToList,然后在.ToList映射到ChildAccessory之后。我在这里找到了这些选项: