次のように SQL を使用できます。
SELECT * FROM student WITH(NOLOCK);
を使用せずにLINQ to SQLでこれを達成するにはどうすればよいTransactionScope
ですか?
次のように SQL を使用できます。
SELECT * FROM student WITH(NOLOCK);
を使用せずにLINQ to SQLでこれを達成するにはどうすればよいTransactionScope
ですか?
LINQ to SQL にはこれを行うメカニズムはありませんが、特定の分離レベルでトランザクションを作成できます。以下のコードを見てください。
using (var con = new SqlConnection("constr"))
{
con.Open();
using (var transaction = con.BeginTransaction(
IsolationLevel.ReadUncommitted))
{
using (var context = new SchoolDataContext(con))
{
// HACK: Setting the context.Transaction is
// needed in .NET 3.5 (fixed in .NET 4.0).
context.Transaction = transaction;
var q = from s in context.Students select c;
}
}
}
このタイプの分離を使用すると、パフォーマンス上の理由などで役立つ場合があります。ただし、このタイプのデータベース分離を使用して、作成、更新、または削除 (CUD) 操作を行わないようにしてください。もちろん状況にもよりますが、データが不整合な状態になる可能性があります。