.net 为什么DBContext Find方法需要验证缓存以检测仍然挂起提交到DB的更改?

.net 为什么DBContext Find方法需要验证缓存以检测仍然挂起提交到DB的更改?,.net,performance,entity-framework,find,.net,Performance,Entity Framework,Find,默认情况下,调用此方法[DBContext.Find]将触发对象缓存的验证,以检测仍挂起提交到数据库的更改 我完全不明白:为什么Find方法需要检测未提交到DB的更改?为什么这对它有用?使用此方法验证缓存以进行这些更改的原因是什么 Find方法返回实体的缓存副本,不管它是否保存到数据库。如果缓存中不存在该实体,则Find方法对数据库执行查询,获取该实体并将其附加到缓存,然后将其返回给调用方。为什么它需要检测实体是否已经提交给DB 请给新手解释一下 请原谅,我的英语不是我的母语 Upd。Find

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

我完全不明白:为什么Find方法需要检测未提交到DB的更改?为什么这对它有用?使用此方法验证缓存以进行这些更改的原因是什么

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

请给新手解释一下

请原谅,我的英语不是我的母语

Upd。Find方法调用DetectChanges方法来检测更改。如果AutoDetectChangesEnabled=false,则不会调用DetectChanges。当AutoDetectChangesEnabled为true或false时调用Find方法有什么区别(性能下降除外)? 我已经在调用Add方法时发现了差异,如下所示:,-但我仍然无法理解调用Find时的差异是什么