我有一个复杂的对象,当我使用没有Include语法的linq查询时,我仍然在对象图中返回所有相关实体。什么可以解释一下?
答案 0 :(得分:1)
你不是真的。 Linq根据您的需要加载对象,但是它会顺便进行,因此只要您开始浏览对象(无论是在代码中还是在调试器监视器中),它都会加载它们,因此它看起来好像已经存在它们。 /击>
如果执行查询然后终止与数据库的连接,当您尝试浏览对象时将获得数据库异常,因为它将无法加载它们。
编辑:对不起,我误解了这个问题。 Linq-to-entities不支持延迟加载(参见下面Craig的评论)。要获取完整的对象图,您应该在Linq查询中使用“Include”或在每个引用上调用Load()。对不起,我无法解释问题中描述的行为。你能提供更多细节吗?也许发布您的查询和代码。
答案 1 :(得分:0)
也许您正在使用Entity Framework 4并启用了延迟提货。您可以检查上下文中的ObjectContextOptions.LazyLoadingEnabled属性。虽然默认情况下属性为“false”,但模型生成工具通常将其设置为“true”。检查MSDN article on Loading Related Objects - 延迟加载部分解释了这一点。