4

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

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。这是正常的,预期的吗?

4

2 回答 2

7

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

在 Trace Properties 对话框 -> Events 选择选项卡中,有一个 Transactions 扩展。打开它并选中相应的框(或者只选中它们)。

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

于 2008-11-24T18:16:04.210 回答
0

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

于 2008-11-24T17:12:09.207 回答