这是我第一次尝试了解来自Net Tiers的Linq to Entity。苦苦挣扎但不了解它背后的一些逻辑......例如。 我什么时候使用:
Entity.EntitySet.Load()
和
context.Entity.Include("EntitySet").SingleOrDefault()
为什么Include采用字符串而不是枚举或排序?
答案 0 :(得分:1)
在EF中,你有Lazy loading和Eager loading的概念。
Al tough Include需要一个字符串,这并不意味着你无法扩展这个!
T4是一件好事。在我参与的项目中,我们创建了一个EntityProperty类,该类包含实体上所有Navigational属性的静态属性。这样,如果属性名称发生更改,您至少会遇到编译错误。
如果你真的想更进一步,可以构建一个包含Lambda的Include方法,然后重新排列Expression树,然后再将它执行到QueryProvider。然后你会有很好的静态输入。
答案 1 :(得分:0)
Include通常用于加载相关表。加载显式加载请求的实体。
使用字符串是因为MS选择 - 不知道任何实际限制。排序T4如何解决MVC中字符串操作的问题 - 也许他们会改进/扩展它以支持更强的打字。