为什么 DBContext Find 方法需要验证缓存以检测仍待提交到数据库的更改?

Ana*_*nov 5 .net performance entity-framework find

\n

默认情况下,调用此方法 [DBContext.Find] 将触发对象缓存的验证,以检测仍待提交到数据库的更改

\n
\n\n

实体框架 5 的性能注意事项

\n\n

我根本不明白:为什么 Find 方法需要检测未提交到数据库的更改?为什么这对它有用呢?使此方法验证这些更改的缓存的原因是什么?

\n\n

Find 方法返回实体的缓存副本 - 无论它是否保存到数据库。如果缓存中不存在该实体,则 Find 方法对数据库执行查询,获取该实体并将其附加到缓存,然后将其返回给调用者。为什么需要检测实体是否已经提交到数据库或尚未提交?

\n\n

请新人解释一下!

\n\n

PS 请原谅我的英语,这不是我的母语!

\n\n

更新。Find 方法调用 DetectChanges 方法来检测更改。如果 AutoDetectChangesEnabled = false,则不会调用 DetectChanges。当 AutoDetectChangesEnabled 为 true 或 false 时调用 Find 方法有什么区别(除了性能下降)?\n我已经发现调用 Add 方法时的差异,这里是:http://ilmatte.wordpress.com/2013/01/01/entity-framework-code-first-always-disable-autodetectchanges-when- importing-data/ ,\xc2\xa0\xe2\x80\x94 但我仍然无法理解调用 Find 时有什么区别?

\n