2009-06-25 18 views

回答

1

看看NHibernate的IInterceptor。

OnFlushDirty - 将显示更新对象上的持久属性。

OnSave - 将在保存的对象上显示持久性属性。

你只需要创建一个实现这个接口的拦截器类,当你配置你的NHibernate会话时,告诉它使用那个类。

Here is a fairly good article to help you get started

1

我觉得比拦截器是一点点过时。努力使用NHibernate事件。我订阅了OnPreUpdate事件。它的参数具有State和OldState属性,但OldState全为空。有没有人知道这个OldState的作品?

+1

如果调用`session.Merge(yourUnsavedObject)`NHibernate将首先加载实体,然后应用来自未保存对象的更改。该过程将填充OldValues。这是使用版本3.1。我相信早期版本使用SaveOrUpdateCopy()。 – 2011-11-07 15:53:41