Как я могу подтвердить, что NHibernate фактически использует транзакцию с использованием SQL Profiler? - PullRequest
4 голосов
/ 24 ноября 2008

Я использую следующий общий код для сохранения сущностей.

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 Profiler, я не вижу никаких BEGIN TRANSACTION отправляемых на SQL Server. Это нормально, ожидается?

Ответы [ 2 ]

7 голосов
/ 24 ноября 2008

Я предложу очевидное: убедитесь, что Profiler настроен на отображение информации о транзакции.

В диалоговом окне «Свойства трассировки» -> вкладка «Выбор событий» есть раскрытие «Транзакции». Откройте его и установите соответствующие флажки (или просто отметьте их все).

Кроме того, к вашему сведению: я проверил наше приложение, которое использует NHibernate, и да, я вижу вызовы BEGIN TRANSACTION и COMMIT TRANSACTION при трассировке в Profiler.

0 голосов
/ 24 ноября 2008

Попробуйте завершить транзакцию, а затем сбросить сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...