DbSet的Add方法是否导致对EF中的数据库的立即查询?

DbSet的Add方法是否导致对EF中的数据库的立即查询?

我很好奇Add<TEntity>(TEntity entity)AddRange<TEntity>(IEnumerable<TEntity> entities)AddRange<TEntity>(params TEntity[] entities)是否将立即执行查询。

根据this的文章,他们不会立即查询数据库。这是因为在本文的一个示例中,我们具有以下代码段:

context.Authors.Add(author);
context.SaveChanges();

但是我无法在文档中找到对此的确认。因此,能否请某人确认我的假设,即DbSet Add方法在调用SaveChanges之前不查询数据库?

okam6hz 回答:DbSet的Add方法是否导致对EF中的数据库的立即查询?

不,不是。 INSERT语句将作为SaveChanges调用的一部分执行。

预添加,这里只是SELECT调用中的ToList() ...

Pre-add

添加后...

On Add

然后在SaveChanges上...

Bingo.

要监视EF周围的行为,包括执行SQL语句的时间/执行什么语句,我强烈建议针对您的数据库(最好是本地数据库)使用探查器,该探查器应避免来自无关查询的“噪音”。这样,您可以在怀疑的地方设置断点,然后监视探查器以了解数据库上的活动。概要分析的数据库在处理ORM时可以发现各种潜在的性能和行为陷阱。

本文链接:https://www.f2er.com/3164031.html

大家都在问