質問

私たちは、このように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)の操作を作成、更新、または削除行わないことを確認してください。もちろん、それはあなたの状況に依存しますが、あなたのデータが矛盾した状態で得ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top