我使用以下通用代码来保存实体。
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。这是正常的,预期的吗?
答案 0 :(得分:7)
我建议显而易见:确保将Profiler设置为显示交易信息。
在“跟踪属性”对话框中 - >事件选择选项卡,有一个用于事务的expando。打开它并检查相应的方框(或只是检查它们全部开启)。
另外,仅供参考:我检查了使用NHibernate的应用程序,是的,我在Profiler中跟踪时看到了BEGIN TRANSACTION和COMMIT TRANSACTION调用。
答案 1 :(得分:0)
尝试提交事务,然后刷新会话。