我刚刚度过了一个巨大的*金发时刻**,但它突出了我对 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
收集,据我所知,没有办法进入子属性(FirstOrDefault
,SingleOrDefault
等,不工作)。
**这只是一个转折点,我碰巧很喜欢金发女郎*