我有一个复杂的对象,当我使用没有包含语法的linq查询时,我仍然将所有相关实体返回到我的对象图中。你可以解释一下吗?Linq to Entities - Eager Loading
0
A
回答
1
你不是真的。 Linq在你需要的时候加载对象,但是它只是在你开始浏览对象时(无论是在代码中还是在调试器中)加载它们,所以它看起来好像你已经有了它们。
如果您执行查询并终止与数据库的连接,当您尝试浏览对象时将会收到数据库异常,因为它将无法加载它们。
编辑:对不起,我误读了这个问题。 Linq-to-entities不支持延迟加载(请参阅下面的Craig评论)。要获得完整的对象图,您应该在Linq查询中使用“Include”,或者在每个引用上调用Load()。对不起,我无法解释问题中描述的行为。你能否提供一些细节。也许发布您的查询和代码。
0
也许你正在使用Entity Framework 4并且启用了懒惰提示。你可以在你的上下文中检查ObjectContextOptions.LazyLoadingEnabled属性。虽然该属性默认为'false',但模型生成工具通常将其设置为'true'。检查MSDN article on Loading Related Objects - 关于延迟加载的部分解释了这一点。
相关问题
- 1. Fluent NHibernate Linq Complex Component Eager Loading
- 2. Linq To Entities
- 3. Linq to entities OrderBy()
- 4. Linq to Entities System.data.Objects
- 5. LINQ to entities exception
- 6. Linq to Entities
- 7. Linq to Entities - GroupBy
- 8. LINQ To Entities Multiselect
- 9. Linq to Entities DefaultIfEmpty
- 10. LINQ-to-Entities
- 11. Linq To Entities
- 12. Eager Loading Laravel Eloquent
- 13. Linq to Entities To Column names
- 14. SQL to Linq to Entities转换
- 15. LINQ to Entities this slow?
- 16. LINQ To Entities then SQLCompact
- 17. Linq to Entities删除
- 18. String.Replace in LINQ to Entities
- 19. Linq to Entities加入
- 20. Linq to entities和SQL_Latin1_General_CP1_CI_AI
- 21. Linq to Entities查询 -
- 22. Linq to Entities Distinct Clause
- 23. Linq to Entities Select Distinct
- 24. LINQ to Entities预测
- 25. Linq-To-Entities包括
- 26. Linq To Entities Optional Distinct
- 27. Linq to Entities .net4 EF
- 28. LINQ to Entities not supported
- 29. 更新Linq To Entities
- 30. 从Linq-to-Entities中选择Linq-to-XML?
这个答案看起来好像是LINQ to Entities做延迟加载。也许这不是我想要的,但这就是我在这里阅读文本的方式。事实上,LINQ to Entities不会执行延迟加载(除非您使用的是版本4并专门启用它)。没有看到实际的查询就很难说更多。 – 2009-09-17 14:13:39
啊。好点,我刚刚看到Linq并认为Linq-to-SQL(按照我的回答描述)。是的,你是对的Craig,Linq to Entities不会做懒惰加载。您必须使用“Include”或在引用上调用Load()。在这种情况下,我无法解释问题中描述的行为。 – 2009-09-17 14:51:52
公平地说,很难说为什么查询的行为方式与未查看查询的方式相同。 :) – 2009-09-17 15:53:35