Entity Framework 4.0を使用しています。ここで、読み取りまたは書き込み中にテーブルへのアクセスを制限する必要があります。おそらくそれはトランザクション分離レベルに関するものです。
それ、どうやったら出来るの?
更新
ここに私が持っているものがあります
using (var db = new MyDb())
{
using (TransactionScope scope = new TransactionScope())
{
var item = db.MyItems.Single(x => x.Id == 5);
item.Price = 12;
db.SaveChanges();
scope.Complete();
}
}
ただし、using (TransactionScope scope
内の任意の行にブレークポイントを配置し、そこで停止してから、SQL Server Management Studioに移動し、内部で使用しているテーブルから選択クエリ(または更新も!)を実行するとトランザクション、何らかの理由でエラーが発生していません。しかし、なぜ?トランザクションの実行中にデータを読み取れないようにする必要があります。
デフォルトでは、トランザクションの IsolationLevel はSerializableです。 Serializableは最高レベルです。他のトランザクションがデータを操作できるようになる前に、トランザクションが完了する必要があります。
次の制限があります。
これは、Entity Frameworkでトランザクションを使用する方法を説明する素晴らしいブログ投稿です。 Entity Frameworkトランザクションスコープの例
Entity Framework 6では、Code Firstを使用して作成されたデータベースのデフォルトのIsolationLevelがREAD_COMMITTED_SNAPSHOTに変更され、潜在的なスケーラビリティと少ないデッドロックが可能になります。 EF 6の今後の仕様 を参照してください