实体框架:AsNoTracking杀死了相关对象的急切加载

时间:2011-08-22 20:03:56

标签: asp.net-mvc entity-framework

我们一直在使用匿名类型投影来加载相关对象,并且大多数情况下这都可行(不是很好,只是确定;使用all columns不太理想,但你能做什么)

现在我们遇到了需要 AsNoTracking()的情况,但这似乎禁用了我们拥有的匿名类型的热切加载行为 - 现在对结果的任何属性访问都会触发新的查询。

这两个概念是互斥的吗?

1 个答案:

答案 0 :(得分:2)

延迟加载和急切加载完全是两件事。

那就是说,听起来你正在谈论修复,这两者都不是。很难说,因为你没有显示任何代码。不,没有要求选择所有列,但是,再次,您不显示您的代码,所以我无法帮助您解决它。

无论如何,是的,这是正常的。 .AsNoTracking表示已加载的实体,它们引用的任何内容都不会与内存中的其他对象一起修复。这是一场表演胜利,但这意味着你可能会不止一次地在内存中找到“相同”的实体。所以它通常只用于只读工作。