linq-to-entities - Entity Framework - 通过集合导航和包含属性

标签 linq-to-entities c#-4.0 entity-framework-4 code-first

我刚刚有一个巨大的 *blonde moment** ,但它突出了我对 Entity Framework 的烦恼。我已经禁用了延迟加载,所以我强制自己真正考虑我需要哪些数据以尽可能快地保持应用程序。

所以为了在查询中返回数据,我需要使用 Include方法:

var query = from item in context.Customers
                .Include(x=> x.Orders)
            select item

这很好,直到我想选择一个更深入层次结构的项目。 IE:
Customer 1-* Orders *-1 Factory 1-1 Factory Type

据我所知,返回所有这些数据的唯一方法热切地将执行以下操作:
var query = from item in context.Customers
                .Include("Orders.Factory.FactoryType")
            select item

有了上述内容,我无法使用 System.Data.Entity根据我的第一个示例使用 Lambda。有谁知道我是否在这里遗漏了一些明显的东西,或者我是否坚持通过集合为我的导航属性使用字符串声明?

如果我没有任何集合,我可以写:
.Include(x=> x.Order.OrderType.Factory.FactoryType) // No bother

但是因为Orders集合,据我所知,没有办法进入子属性( FirstOrDefaultSingleOrDefault 等,不起作用)。

**这只是一句台词,我碰巧很喜欢金发*

最佳答案

要包含 EntityCollections,您可以使用 选择 方法:

var query = from item in context.Customers
           .Include(c => c.Orders.Select(o => o.Factory.FactoryType))
           select item

请注意,这不是标准 ObjectQuery<T>.Include Method 的重载并且只是 ObjectQuery<T> 上的一个扩展方法类(class)来了 EF CTP4 .

关于linq-to-entities - Entity Framework - 通过集合导航和包含属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780748/

相关文章:

c# - Entity Framework 4 和 Web Api 的匿名类型转换问题

multithreading - 并行收集处理的应用程序设计

c# - 计时器流逝的资源全局化

entity-framework - 使用 EF Code-First 模型在保存或验证之前执行逻辑

c# - 函数导入(存储过程)是否需要 SaveChanges()?

asp.net-mvc-3 - 使用 POCO Entity Framework 4 时丢失 DataAnnotations

.net - 在 Entity Framework 4.1 中查询实体的子集合

c# - Linq 查询以一对多关系搜索 "Many"

asp.net-mvc-3 - asp.net mvc 3 Dropdownlist问题,必须是类型 'IEnumerable<SelectListItem>'?

c# - Entity Framework 中的分组和计数