C# 为什么Linq-to实体在查询中识别查询,而不是在从方法返回查询时识别查询?
这是我发现的一个常见错误,但我不确定如何修复它C# 为什么Linq-to实体在查询中识别查询,而不是在从方法返回查询时识别查询?,c#,entity-framework,asp.net-mvc-4,linq-to-sql,linq-to-entities,C#,Entity Framework,Asp.net Mvc 4,Linq To Sql,Linq To Entities,这是我发现的一个常见错误,但我不确定如何修复它 LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[ProjectX.Models.DTOs.ExampleDTOUDC] Select(Int32)' method, and this method cannot be translated into a store expression. 下面是有问题的违规代码 public IQuerya
LINQ to Entities does not recognize the method
'System.Linq.IQueryable`1[ProjectX.Models.DTOs.ExampleDTOUDC] Select(Int32)'
method, and this method cannot be translated into a store expression.
下面是有问题的违规代码
public IQueryable<ExampleDTO> Select()
{
return from e in db.vw_Example
select new ExampleDTO()
{
exampleUDCs = new ExampleUDCRepository().Select(v.VehicleID).AsEnumerable()
//etc
};
}
如果您想查看,下面是我的ExampleDTO类中的ExampleUDCs声明:
public IEnumerable<ExampleUDCDTO> ExampleUDCs { get; set; }
public IEnumerable ExampleUDCs{get;set;}
有人知道我有什么方法可以解决这个问题,可以重用我的ExampleUDCDTO().Select(int-id)
方法中的代码,而不是将所有查询放入第一个Select()
方法中
如果你需要更多的信息,请告诉我。谢谢。实体框架使用表达式,它试图将完整的表达式编译成一段SQL。因为您正在创建一个包含方法调用的表达式,所以EF也会尝试将该方法调用编译为SQL。这是不可能的
public IQueryable<ExampleDTO> Select()
{
return from e in db.vw_Example
select new ExampleDTO()
{
ExampleID = e.ExampleID,
ExampleUDCs = (from eudc in db.ExampleUDCs
where eudc.ExampleID == id
select new ExampleUDCDTO()
{
ExampleID = eudc.ExampleID
//etc
})
};
}
public IEnumerable<ExampleUDCDTO> ExampleUDCs { get; set; }