两种提交类型之间的主要区别是什么?
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();
}