此代码是否有任何副作用:
///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模式吗?
答案 0 :(得分:0)
副作用是您必须手动处理连接,并且连接由上下文保留整个生命周期。它也会在整个生命周期中保持开放状态,效率会降低。
另一个副作用是读取uncommited隔离级别本身,这是非常危险的,因为它允许读取未经通信的事务数据。
你为什么需要这个?默认情况下,EF使用数据库服务器的默认事务隔离模式。对于SQL服务器,它被读取提交。 EF默认情况下也不会保留记录锁定,因为每次读取操作只是事务的一部分,持续时间仅适用于该读取。只有SaveChanges
使用事务处理多个数据库命令。