这是我第一次尝试理解来自Net Tiers的Linq to Entity。挣扎着,但不理解它背后的一些逻辑......例如。 什么时候使用:Linq to Entity和Loading EntitySet
Entity.EntitySet.Load()
和
context.Entity.Include("EntitySet").SingleOrDefault()
而且为什么包含有一个字符串,而不是一个枚举或为哪般?
这是我第一次尝试理解来自Net Tiers的Linq to Entity。挣扎着,但不理解它背后的一些逻辑......例如。 什么时候使用:Linq to Entity和Loading EntitySet
Entity.EntitySet.Load()
和
context.Entity.Include("EntitySet").SingleOrDefault()
而且为什么包含有一个字符串,而不是一个枚举或为哪般?
在EF中,您具有延迟加载和预先加载的概念。
Al tough包含一个字符串,这并不意味着你不能扩展它!
T4是一件好事。在我所研究的项目中,我们创建了一个EntityProperty类,该类包含实体上所有导航属性的静态属性。这样,如果属性名称发生更改,至少会出现编译错误。
如果您真的想更进一步,您可以构建一个包含Lambda的方法,然后在执行到QueryProvider之前重新排列表达式树。然后你会有很好的静态输入。
包含通常用于加载相关表。加载显式加载请求的实体。
字符串被使用,因为MS选择了 - 没有意识到任何真正的限制。有关T4如何解决MVC中字符串操作的问题 - 也许他们会考虑改进/扩展它以支持更强大的输入。
我真心希望他们在未来支持更强的打字。 – Rob
请阅读Lazy Loading和Eager loading。我现在遇到的问题(也许是另一个问题)是我的实体对象现在已经分离,在使用Include之后无法读取Entity.EntitySets。计数为零,初始加载显示为10.每当我需要EntitySet值时,是否必须重新加载? (希望这是有道理的)。 – Rob
你可以使用你正在做的事情的代码示例更新你的开始帖子吗? –
我想我在处理网页时犯了一个错误。当我不需要在Page_Load中时,我正在加载EntitySet。长话短说,但我想我需要在stackoverflow中提出另一个关于检查已经分离的实体的实体集数量的最佳方法。 – Rob