这是我第一次尝试了解来自 Net Tiers 的 Linq to Entity。与它作斗争但不理解它背后的一些逻辑……例如。 我什么时候使用:
Entity.EntitySet.Load()
和
context.Entity.Include("EntitySet").SingleOrDefault()
另外,为什么 Include 采用字符串而不是枚举或排序?
最佳答案
在 EF 中,您有延迟加载和预加载的概念。
- 延迟加载意味着您可以在需要时加载数据。这是通过 Load() 方法调用完成的。
- 预加载意味着您已经预先知道您将需要一些数据,因此您可以通过 Include(string) 将其加载到初始查询槽中。
Al tough Include 需要一个字符串,这并不意味着您不能扩展它!
T4 是个好东西。在我参与的一个项目中,我们创建了一个 EntityProperty 类,其中包含实体上所有导航属性的静态属性。这样,如果属性名称更改,您至少会得到一个编译错误。
如果您真的想更进一步,您可以构建一个采用 Lambda 的 Include 方法,然后在将其执行到 QueryProvider 之前重新排列表达式树。然后你就会有很好的静态类型。
关于c# - Linq to Entity 和加载 EntitySet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912106/