如何确认NHibernate实际上正在使用SQL事件探查器进行事务?

时间:2008-11-24 15:54:42

标签: c# nhibernate transactions

我使用以下通用代码来保存实体。

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事件探查器时,我没有看到任何BEGIN TRANSACTION被发送到SQL Server。这是正常的,预期的吗?

2 个答案:

答案 0 :(得分:7)

我建议显而易见:确保将Profiler设置为显示交易信息。

在“跟踪属性”对话框中 - >事件选择选项卡,有一个用于事务的expando。打开它并检查相应的方框(或只是检查它们全部开启)。

另外,仅供参考:我检查了使用NHibernate的应用程序,是的,我在Profiler中跟踪时看到了BEGIN TRANSACTION和COMMIT TRANSACTION调用。

答案 1 :(得分:0)

尝试提交事务,然后刷新会话。