2011-06-12 55 views
1

我是nhibernate的新手。我正在开发一个小型的c#应用程序,使用存储库模式。在我的仓库中,我实现了一个简单的钩子来检测实体何时被保存。 我调用实体的事件处理程序来执行实体可能需要的任何操作。nhibernate SaveOrUpdate - 轻松确定将执行哪些操作

我的问题是,我也使用SaveOrUpdate方法。由于我只需要在保存操作时调用事件处理程序,因此我无法区分SaveOrUpdate调用中的保存或更新。

因此,简而言之,是否有任何简单的方法来确定将要执行的操作 - 它会是保存还是更新?

回答

6

如果实体的ID未设置,nHibernate将调用Save方法,否则将调用Update方法。

看吧:

SaveOrUpdate Vs Update and Save in NHibernate

“saveOrUpdate()方法着眼于标识符,并且决定什么是在上面的必要。”

+0

我明白了,以及是否有任何方法可以检测级联保存并在完成后执行操作? – vondip 2011-06-13 02:58:40

+1

我想你可以尝试寻找Interceptor类。拦截器允许你控制基本的NHibernate方法覆盖OnSave,OnFlushDirty等等。 http://elegantcode.com/2008/05/15/implementing-nhibernate-interceptors/ http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11-interceptors-and/1nr4enxv3dpeq/14# – danyolgiax 2011-06-13 07:02:52