2

次のように、単一のセッションで複数のトランザクションを作成して問題があるかどうかを知りたいです。

using (var session = factory.OpenSession())
{
    using (var trans1 = session.BeginTransaction())
    {
        .....
        trans1.commit();
    }

    using (var trans2 = session.BeginTransaction())
    {
        .....
        trans2.commit();
    }

    using (var trans3 = session.BeginTransaction())
    {
        .....
        trans3.commit();
    }

    using (var trans = session.BeginTransaction())
    {
        .....
        // trans1.commit();
    }
}

それは可能ですか、それともトランザクションごとに新しいセッション オブジェクトを開く必要がありますか?

ご協力いただきありがとうございます。

4

4 に答える 4

2

はい、あなたがしていることは問題ありません。

nhibernate がサポートしていないのは、複数のネストされたトランザクションです。

于 2013-10-28T18:47:33.933 に答える
1

NHibernate でも、1 つのセッションで複数のトランザクションを持つことは一般的ではありません。また、個人的な経験から、他の状況でセッションを再利用することはお勧めできません。

副作用を避けるために、ワークフローをできるだけシンプルにすることをお勧めします。

  • セッションを開く
  • 取引を開く
  • エンティティを使用する
  • トランザクションをコミットする
  • 例外の場合のロールバック
  • セッションのクローズ/フラッシュ (常に)
于 2013-10-30T11:49:54.367 に答える
0

異常ではありますが問題ありません。いずれかのトランザクションがロールバックした場合は、セッションを破棄する必要があることに注意してください。

于 2013-10-30T18:26:50.260 に答える