3

次のように SQL を使用できます。

SELECT * FROM student WITH(NOLOCK);

を使用せずにLINQ to SQLでこれを達成するにはどうすればよいTransactionScopeですか?

4

1 に答える 1

10

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) 操作を行わないようにしてください。もちろん状況にもよりますが、データが不整合な状態になる可能性があります。

于 2010-02-08T10:38:43.433 に答える