我想知道使用DBContext
实现事务的最佳方法。具体而言,
- 如果我更改多个实体,
DbContext.SaveChanges
是否在内部实现了事务? - 如果我想多次调用
DbContext.SaveChanges
(相同的上下文/不同的上下文),如何实现事务?
我想知道使用DBContext
实现事务的最佳方法。具体而言,
DbContext.SaveChanges
是否在内部实现了事务?DbContext.SaveChanges
(相同的上下文/不同的上下文),如何实现事务?SaveChanges
内部使用事务。TransactionScope
来包装多个对 SaveChanges
的调用。示例:
using(var scope = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
// Do something
context.SaveChanges();
// Do something else
context.SaveChanges();
scope.Complete();
}
要进行异步操作,请执行以下操作。
using(var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
// Do something
await context.SaveChangesAsync();
// Do something else
await context.SaveChangesAsync();
scope.Complete();
}