我们注意到所有的INSERT / UPDATE语句都是使用EF4的SaveChanges以READ UNCOMITTED隔离级别执行的。
在我们的UnitOfWork类中,这是提交更改的代码(插入/更新):
public int Commit()
{
return ObjectContextManager.GetObjectContext().SaveChanges();
}
我们希望使用Entity Framework 4提交的所有INSERTS和UPDATES都将在SNAPSHOT隔离级别下提交。
我们已尝试使用Scope包围SaveChanges(),尽管它似乎不起作用(在SQL端根本没有插入)。
public int Commit()
{
int ret;
var scope = new System.Transactions.TransactionScope(
// a new transaction will always be created
TransactionScopeOption.RequiresNew,
// we will allow volatile data to be read during transaction
new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Snapshot
}
);
using (scope)
{
ret = ObjectContextManager.GetObjectContext().SaveChanges();
scope.Complete();
}
return ret;
}
我们做错了什么?