2009-10-27 7 views
10

私はNhibernateを初めて使用しているので、私のクエリはあなたにとって些細なことかもしれません。session.BeginTransaction()and transaction.Commit()

我々は、一般的にはBeginTransaction /データを削除/ /更新を保存するためのコミット/ロールバックので、我々は、一般的にBeginTransaction()Commit()は私がしても必要とされている場合、私は疑問に思う

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

内のデータ操作コードを埋め込みますデータの取得には session.Get<T>(id);または session.CreateCriteria<T>().List();

をご利用ください。

ありがとうございました!

答えて

5

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

この記事を読むのはAyende Rahienです。

+0

しかし、彼はあなたがNHのすべての操作のためにトランザクションを使うべきだとは言わないのですか?なぜ「いいえ」と言いますか? –

+0

@HeavyWave:私は、「いいえ、あなたはトランザクションなしでそれをすることはできません」という意味です。 –

3

トランザクションでは必ずクエリを使用してください。性能だけでなく並行性の理由からも、Ayendeはそれについて語っています。

彼のHibernateプロファイラは、トランザクションスコープではないクエリを使用するかどうかを示し、警告します。

関連する問題