在将我们的整个系统从 NH1.2 升级到 NH3.3 的过程中。系统中的一个常见场景(以前的开发人员)是分离多个对象并将它们存储在 Web Session 中,然后通过 IHttpModule 在每个请求时附加它们。
在运行 NProf 的简单页面加载中,我注意到现在附加的这些对象导致触发它们在数据库中更新,尽管它们没有被更改。
要附加的先前代码(NH1.2)大致如下:
if (((NHibernate.Impl.SessionImpl)session).IsSaved(obj) session.Lock(obj, LockMode.None)
由于似乎 IsSaved 已被删除,代码现在是:
如果 (obj != null) session.Lock(obj, LockMode.None)
我的理解是 LockMode.None 不应该导致数据库更新。有些对象有版本,有些则没有。两者都在更新。
任何建议表示赞赏。