質問

私はNhibernateを初めて使用するので、クエリは簡単に思えるかもしれません。

通常、データ操作コードを内部に埋め込みます

  using (var session = sessionFactory.OpenSession())
  {
    using (var transaction = session.BeginTransaction())
    {
       ...Code for CRUD operations
       transaction.Commit();
    }
  }

通常、データの保存/更新/削除にはBeginTransaction / Commit / Rollbackを使用するため、

を使用してデータを取得している場合でも、BeginTransaction()Commit()が必要かどうか疑問に思います session.Get<T>(id);または session.CreateCriteria<T>().List();

ご案内ください。

ありがとう!

役に立ちましたか?

解決

いいえ、トランザクションなしでデータを取得することはできません。すべてのNH操作はトランザクション中心です。

Ayende Rahien

他のヒント

クエリでは常にトランザクションを使用する必要があります。パフォーマンスだけでなく、同時実行の理由、および Ayende がそれについて述べています。

彼のHibernateプロファイラーは、トランザクションスコープにないクエリを使用すると表示および警告します。

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