我正在用EF6编写一个MVC 5互联网应用程序,我对调用context.SaveChanges()方法时会发生什么有疑问。
DbContext对象是否存储发生的CRUD操作,这样如果调用了SaveChanges()方法,并且数据库中没有任何数据被更新,则不会发生任何操作?
以下是一个例子:
在上面的例子中,是否对数据库进行了任何更改?是否发生了任何数据库事务?
我做了一些研究,但找不到这个问题的答案。
提前致谢。
答案 0 :(得分:2)
EF6使用更改跟踪器来检测是否有任何更改 当您调用SaveChanges()时,EF6正在做的第一件事就是调用DetectChanges()来检查更改跟踪器。
现在假设您真的想知道某些内容是否已经发生变化,您也可以自己查看更改跟踪器。这篇文章在答案中显示了如何:
Entity Framework 6: audit/track changes
答案 1 :(得分:0)
不,如果实体未更改,则状态不变,因此EF对这些实体不感兴趣。
如果需要,您可以通过手动更改实体状态来强行保存。