我想跟踪我的域模型中的更改。我知道NHibernate ISession是UnitOfWork模式的一个实现,所以它跟踪这个变化。例如,在Commit()或Flush()之前,有什么办法可以将它们拉出来?从NHibernate获取实体中已更改字段的列表会话
2
A
回答
1
看看NHibernate的IInterceptor。
OnFlushDirty - 将显示更新对象上的持久属性。
OnSave - 将在保存的对象上显示持久性属性。
你只需要创建一个实现这个接口的拦截器类,当你配置你的NHibernate会话时,告诉它使用那个类。
1
我觉得比拦截器是一点点过时。努力使用NHibernate事件。我订阅了OnPreUpdate事件。它的参数具有State和OldState属性,但OldState全为空。有没有人知道这个OldState的作品?
相关问题
- 1. 从NHibernate会话中获取已更改的实体
- 2. 如何从Nhibernate会话中获取已更改(脏)实体的列表?
- 3. NHibernate:修改两个会话中的实体的不同字段
- 4. Hibernate Envers - 获取已更改的字段
- 5. 更改nHibernate会话的CommandTimeout
- 6. 确定实体字段是否在NHibernate中更改
- 7. 从列表中的ItemRenderer中获取已更改的值
- 8. 会话#如何保存(...)以识别已更改的实体?
- 9. Grails从会话中的已存档实例中获取空值
- 10. 只保存已在实体框架中更改的字段4
- 11. 从JGit中提交获取已更改文件的列表
- 12. TypeInitializationException获取NHibernate会话时
- 13. NHibernate从会话提取DBTransaction
- 14. 如何从Redis获取会话列表?
- 15. 实体对象和NHibernate会话
- 16. 获取从会话阵列
- 17. Django表单获取更改字段
- 18. NHibernate如何跟踪对实体中的字段所做的更改?
- 19. “会话已关闭!” - NHibernate
- 20. 从Doctrine获取数组/实体列表
- 21. 如何获取会话的字段ID?
- 22. CakePHP 3如何检测实体字段是否已更改
- 23. 从实体获取单列
- 24. NHibernate:获取所有打开的会话
- 25. 在实体框架中获取导致保存更改异常的字段
- 26. 更改详细片段上的列表片段的字体
- 27. 获取已更改
- 28. 从实例获取字段?
- 29. 数据服务获取实体(EF 4.0)已更改属性
- 30. 从Symfony2中获取实体和相关实体的特定字段?
如果调用`session.Merge(yourUnsavedObject)`NHibernate将首先加载实体,然后应用来自未保存对象的更改。该过程将填充OldValues。这是使用版本3.1。我相信早期版本使用SaveOrUpdateCopy()。 – 2011-11-07 15:53:41