11

私は FluentNHibernate を使用しており、SQL Server 2008 ビューにマップされたレコードのリストを持っています。テーブルをロックしないことが優先事項です。

ビュー内の SQL クエリには with (nolock) はありませんが、次のアプローチを使用しています...

using (var txScope = new TransactionScope (TransactionScopeOption.Suppress, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })))
{
   ... ビューからのレコードの読み取りは、Fluent NHibernate を介してここで行われます...
}

アプリケーション層で分離レベルをコミットされていない読み取りに設定し、そのコンテキスト内で生成されるクエリに (nolock) を適用しますか?

4

2 に答える 2

0

理由はわかりませんが、TransactionScope コードが機能しませんでした。

このコードを使用しました。以下の新しいセッションを開始すると、既存のトランザクションがまだないことを確認できます。(もちろん他の方法もあります)

        using (var session = _session.SessionFactory.OpenSession())
        using (var txn = session.BeginTransaction(IsolationLevel.ReadUncommitted))
        {
            // bunch of select statements.
        }

NHibernate Profiler では、次のように表示されました。

begin transaction with isolation level ReadUncommitted
于 2015-05-15T14:14:26.447 に答える