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