Cal*_*ton 2 c# entity-framework
这段代码:
using(var context = this.contextFactory.Create()) // creates a context
using(var transaction = context.Database.BeginTransaction()) // starts a transaction
{
try
{
await context.SaveChangesAsync(); // Save my changes
transaction.Commit(); // Commit my changes
}
catch(Exception)
{
transaction.RollBack(); // Rollback my changes
}
}
Run Code Online (Sandbox Code Playgroud)
我是否正确地说,如果transaction.Commit()抛出错误,那么transaction将会回滚?
不只是在创建和实体或添加实体的场景中DbSet<>.我认为我是对的,但只是想确定一下.
事务提交或回滚.中间没有.
如果Commit抛出它取决于您可以从中得出的具体错误.网络和超时错误不允许您判断事务是否已在商店中提交.
您不需要显式回滚.正如我所说,中间没有.如果事务没有提交,则肯定会回滚.我不知道为什么网上这么多人决定明确回滚.可能你刚刚看到错误的示例代码.标准模式是在出错时不执行任何操作.
错误冒泡,导致回滚,最终在可以完成某些操作的地方处理.
你吞下这个例外.非常危险.
| 归档时间: |
|
| 查看次数: |
825 次 |
| 最近记录: |