4


1

NHibernateが実際にSQLプロファイラーを使用してトランザクションを使用していることを確認する方法を教えてください。

エンティティを保存するために、次の一般的なコードを使用しています。

using (ITransaction tx = session.BeginTransaction())
{
    try
    {
       entity.DateModified = DateTime.Now;
       session.SaveOrUpdate(entity);
       session.Flush();
       tx.Commit();
       return entity;
    }
    catch (Exception)
    {
       tx.Rollback();
       throw;
    }
}

しかし、SQLプロファイラを見ているときに、SQL Serverに送信されている `BEGIN TRANSACTION`が見えません。 これは正常ですか。

2 Answer


7


私は明白なことをお勧めします:プロファイラがトランザクション情報を表示するように設定されていることを確認してください。

[Trace Properties]ダイアログ - > [Events]選択タブには、[Transactions]の展開があります。 それを開いて、適切なボックスをチェックしてください(あるいは、単に全部チェックしてください)。

また、FYI:私はNHibernateを使用する私達のアプリケーションをチェックしました、そして、私はプロファイラーでトレースしている間はい私はBEGIN TRANSACTIONとCOMMIT TRANSACTION呼び出しを見ます。


0


トランザクションをコミットしてから、セッションをフラッシュしてください。