我需要通过 nhibernate 保存未更改的对象以触发数据库触发器。
那么我怎么能告诉 nhibernate 这个对象是脏的,即使没有属性改变呢?
因此,关于我对 Radims 回答的评论,我做了以下事情:
我更改了实体的已加载状态数组的一个条目,因此 nhibernate 将在下次保存时将其视为已更改。
我知道这是一种解决方法,但对我来说它到目前为止有效。
EntityEntry entry = sessImpl.PersistenceContext.GetEntry(dbo);
entry.LoadedState[x] = y;
有 NHibernate 扩展点,正是针对这种情况的。在这种情况下,我们可以附加 customEventListener
或引入IInterceptor
.
检查这个问题How to make NHibernate 考虑属性在使用动态更新或插入时始终是脏的?寻求解决方案(基于 IInterceptor 的答案)
请参阅 NHibernate 文档12. 拦截器和事件