1

此代码是否有任何副作用:


///This code runs per request 
public static MyObjectContext CreateEntity()
{
  MyObjectContext db=new MyObjectContext();

  db.Connection.Open();
  var con = (SqlConnection)((EntityConnection)hi.Connection).StoreConnection;
  SqlCommand cmd = new SqlCommand("set transaction isolation level read uncommitted",con);
  cmd.ExecuteNonQuery();

  return db;
}

现在“db”实例将运行 ReadUncommited 模式?

4

1 回答 1

0

副作用是您必须手动处理连接,并且连接在其整个生命周期内都由上下文持有。它还在上下文的整个生命周期内保持打开状态,这可能会降低效率。

另一个副作用是读取未提交的隔离级别本身,使用起来非常危险,因为它允许读取未提交的事务数据。

你为什么需要这个?EF 默认使用数据库服务器的默认事务隔离模式。对于 SQL 服务器,它是读取提交的。默认情况下,EF 也不对记录进行锁定,因为每个读取操作只是事务的一部分,其持续时间仅用于该读取。仅对SaveChanges多个数据库命令使用事务。

于 2011-04-26T07:22:44.347 回答