session.BeginTransaction()およびtransaction.Commit()
-
06-07-2019 - |
質問
私は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 がそれについて述べています。
彼のHibernateプロファイラーは、トランザクションスコープにないクエリを使用すると表示および警告します。
所属していません StackOverflow