【发布时间】:2010-12-07 17:25:58
【问题描述】:
我正在尝试确定我是否做错了什么,或者实体框架是否不适合这样做。我想执行 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();
使用 Entity Framework,Employees 行将导致 method cannot be translated into a store expression 错误 - Entity Framework 似乎不喜欢在 LINQ 语句中构造非实体类,即使它不涉及任何数据库端逻辑。
我知道更改跟踪实体类被使用,但不可能将信息读取到任意类中吗?我不想为每个可能的读取场景构建实体和数据库视图,我不想通过管道发送一半的数据库(整个 Employee 或 Manager 实体)只是为了读取 name 属性之类的东西。
是否可以使用实体框架进行这种“懒惰但高效”的查询,或者实体框架只是没有考虑到它?在将项目从 Linq2SQL 转换为实体框架时,我已经遇到了许多问题,这真的会导致交易失败。
【问题讨论】:
标签: .net-4.0 entity-framework-4