S3d*_*di9 18 c# entity-framework
什么之间的区别,_context.SaveChanges并且_context.AcceptAllChanges(),是AcceptAllChanges()有几分重装数据库数据或回滚(丢弃)由用户做出的时候,他并没有使用变化SaveChanges()
Hab*_*bib 22
ObjectContext.AcceptAllChanges方法 - MSDN
如果调用了SaveChanges方法并且 未指定AcceptAllChangesAfterSave,则用户必须调用AcceptAllChanges方法.AcceptAllChanges方法在事务失败且用户想要重试的场景中很有用.
您可能会看到:http://blogs.msdn.com/b/alexj/archive/2009/01/11/savechanges-false.aspx
如果你调用SaveChanges()或SaveChanges(true),EF只会假设如果它的工作完成正常,一切正常,所以它将丢弃它一直在跟踪的更改,并等待新的更改.
不幸的是,如果交易中的其他地方出现问题,因为EF放弃了跟踪的更改,我们无法恢复.
这是SaveChanges(false)和AcceptAllChanges()的用武之地.
SaveChanges(false)告诉EF执行必要的数据库命令,但保持更改,以便在必要时重放它们.
现在,如果更广泛的事务失败,您可以重试EF特定位,再调用SaveChanges(false).或者,您可以通过状态管理器来记录失败的内容.
一旦更广泛的事务成功,您只需手动调用AcceptAllChanges(),并且将丢弃正在跟踪的更改.
| 归档时间: |
|
| 查看次数: |
15108 次 |
| 最近记录: |