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

副作用は、接続を手動で処理する必要があり、接続がその存続期間全体にわたってコンテキストによって保持されることです。また、コンテキストの有効期間全体にわたって開かれたままになるため、効率が低下する可能性があります。

もう 1 つの副作用は、コミットされていないトランザクション データの読み取りを許可するため、コミットされていない分離レベル自体の読み取りです。

なぜこれが必要なのですか?デフォルトでは、EF はデータベース サーバーのデフォルトのトランザクション分離モードを使用します。SQL サーバーの場合、読み取りコミットされます。また、デフォルトでは、EF はレコードのロックを保持しません。これは、各読み取り操作が、その読み取りのためだけの期間を持つトランザクションの一部にすぎないためです。複数のデータベース コマンドに対してのみSaveChangesトランザクションを使用します。

于 2011-04-26T07:22:44.347 に答える