C# 无法在LINQ to>实体查询中构造实体或>复杂类型“ChildAccessory”

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

我想我理解以下错误,但我不确定如何修复它

类名:System.NotSupportedException,消息:实体或 无法在LINQ to中构造复杂类型“ChildAccessory” 实体查询

我应该创建一个DTO并从存储库返回它来修复问题,还是有更好的修复方法

我试图获取子附件,但也包括父表中的默认附件

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之后。我在这里找到了这些选项: