2017-07-07 49 views
0

我有一段代码可以打开一个nHibernate事务。如果当前会话很脏,我只想这样做。我正在使用Session.IsDirty(),但自从我发现这会将未决SQL语句刷新到数据库。有谁知道我可以使用的替代方案,只是检查是否有任何挂起的SQL语句,但不执行它们?nhibernate:替代Session.IsDirty()

+0

这种模式听起来很奇怪。你尝试过一些UnitOfWork吗? – Rabban

+0

最好的做法是在事务简单读取中进行包装。所以你不应该这样做,因为一切都应该交易。不进行交易会导致连接在每条语句后被释放,并可能导致二级缓存停止缓存。如果您在交易时遇到锁定争用问题或死锁,这通常意味着应用程序中出现问题,例如事务太长,隔离级别太高,或者SQL Server上未启用“读取已提交快照”等。 –

回答