我试图确定如果我做错了什么,或者如果实体框架只是无意这样做。我想执行一个LINQ样式查询来填充一个对象,包括子元素的列表。在Linq2SQL中,这是有效的,并被转换为一个高效的SQL查询,其结果填充新列表。实体框架无法在查询中使用非实体类吗?
class ReportItem
{
string Manager; /* ... */
List<string> Employees; /* ... */
}
var report = (from manager in entities.Managers
select new ReportItem()
{
Manager = manager.Name,
Employees = manager.Employees.Select(e => e.Name).ToList()
}).ToList();
实体框架雇员线会导致method cannot be translated into a store expression
错误 - 实体框架似乎并不喜欢构建LINQ语句中的非实体类,即使它不涉及任何数据库方面的逻辑。
据我所知,对于变更跟踪实体类都使用了,但是不可能将读取信息变成任意类吗?我不想为每个可能的读取场景构造实体和数据库视图,并且我不想在管道(整个Employee或Manager实体)上发送数据库的一半,只是为了读取名称属性等内容。
是否有可能做这种“懒惰而高效的”查询的实体框架,或实体框架只是没有考虑到与它建立?我已经遇到了将一个项目从Linq2SQL转换为实体框架的许多问题,这可能真的会导致交易失败。
不幸的是匿名类型的项目被认为是,但对我来说员工和枚举的列表之间的区别是有意义的。然而,这仍然回答了我关于EF设计行为的真正问题。谢谢 – David 2010-12-08 17:50:54