LINQ to SQLはで(NOLOCK)で使用する方法は?
-
19-09-2019 - |
質問
私たちは、このようにSQLを使用することができます:
SELECT * FROM student WITH(NOLOCK);
どのように私はTransactionScope
を使用せずにSQLにLINQでこれを達成することができますか?
解決
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)の操作を作成、更新、または削除行わないことを確認してください。もちろん、それはあなたの状況に依存しますが、あなたのデータが矛盾した状態で得ることができます。
所属していません StackOverflow