NHibernate检查更改为提示保存

时间:2010-09-13 22:26:57

标签: c# wpf nhibernate save

我想知道NHibernate中是否有任何类型的功能来检查是否已经对对象进行了更改,感觉它已被加载,需要写入DB来保存。

我还有一些其他的部分,比如当前选择的元素,等等可能会改变,但如果他们这样做,则在实际数据方面没有区别。

在WPF / C#中没有什么好办法来检查是否有需要保存的更改,这样我就可以在退出之前提示用户。

由于

2 个答案:

答案 0 :(得分:0)

简短回答:您需要实施 your own "IsDirty" methods


  

NHibernate旨在发挥作用   没有强加任何要求   你的实体类。它有自己的作用   会话中的内部跟踪   是否被实体跟踪   会话很脏。虽然它会   好的,如果它暴露了一些方法   ISession检查实体是否   脏,没有解决变化   在实体的情况下向实体提出   脱离会话。

_

  

您的课程可以实施ICloneable   和IEquatable,然后你可以做一个   在允许之前克隆您的对象   然后,用户进行更改   然后将该克隆与该克隆进行比较   当前对象,看他们是否是   更长的时间。

     

如果您班级内的馆藏   还实现了ICloneable和   IEquatable,这个方法也可以让   你知道是否有什么变化   在层次结构的某个地方。

答案 1 :(得分:0)

您可以查询Session.IsDirty,如果任何对象发生更改,它将返回true。

更复杂的方法是获取SessionImplementor,Persister,PersistenceContext和当前值,然后在那里使用FindDirty。

我不推荐它,但如果需要,我可以给你代码。最好在ViewModel级别跟踪它。