DbContextTransaction.Commit()和上下文之间的差异.Database.CommitTransa



两种提交类型之间的主要区别是什么?

bool adresVarmi = false;
using (var trans = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted))
{
adresVarmi = dbContext.MUSTERI_ADRES.Where(x => x.MUSTERI_TANIM_ID == dto.MusteriId).AsNoTracking().Count() > 0;
trans.Commit();
dbContext.Database.CommitTransaction();
}

对于高流量应用程序来说是一样的吗?

context.Database.CommitTransaction()

相当于

context.Database.CurrentTransaction.Commit()

该方法的主要目的是能够从未调用BeginTransaction()或无法访问返回的IDbContextTransaction对象的代码中提交当前事务。如果没有当前活动的事务,它将失败。

由于您是启动事务并有权访问返回的IDbContextTransaction对象的人,因此最好对其发出Commit(),而不是使用CommitTransaction()方法。

即,以下是首选(注意,您不应该像您的示例中那样同时调用这两个,因为第二个会失败,因为在Commit()调用之后不会有活动事务(:

using (var trans = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted))
{
// do something...
trans.Commit();
}

最新更新