我认为这是一个简单的问题,但我的Google搜索功能很薄弱。
我遇到了以下链接中描述的问题:生成的ID和级联:
https://www.hibernate.org/hib_docs/nhibernate/html/example-parentchild.html(在底部)
我使用他们建议的Interceptor方法修复它。一切似乎都有效,所以我很高兴。
那就是说,我不知道返回值的重要性来自以下方法:
public override bool OnLoad(object entity, object id, object[] state, string[] propertyNames, IType[] types)
{
if (entity is Persistent) ((Persistent)entity).OnLoad();
return false;
}
public override bool OnSave(object entity, object id, object[] state, string[] propertyNames, IType[] types)
{
if (entity is Persistent) ((Persistent)entity).OnSave();
return false;
}
在这两种情况下都会返回false。
当我谷歌关于NHibernate Interceptor时,我看到了很多关于如何编写一个的例子。有些人返回true(http://www.lostechies.com/blogs/rhouston/archive/2008/03/27/creating-a-timestamp-interceptor-in-nhibernate.aspx)。我不知道这里的区别是什么。我的代码正在运行,但拦截器对我来说似乎很有用,所以我希望能有更好的理解。
答案 0 :(得分:5)
我相信返回值应指示拦截器方法中是否已更改state参数。你是对的 - 目前这是一个艰难的谷歌 - 最近NHibernate网站移动了,谷歌似乎找不到像以前那么多有用的信息。
答案 1 :(得分:0)
休伊,
阅读这篇文章,我不是.net程序员,但这篇文章非常有用:
http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11/1nr4enxv3dpeq/14#
第11章拦截器和事件它 通常对应用程序有用 对发生的某些事件做出反应 在NHibernate里面。这允许 某些种类的实施 通用功能和扩展 NHibernate功能。
11.1。拦截器IInterceptor接口提供来自的拦截器 允许的应用程序会话 申请检查和/或 操纵持久性的属性 对象在保存,更新之前, 删除或加载。一种可能的用途 这是为了跟踪审计 信息。例如, 自动跟随IInterceptor 在设置时设置createTimestamp 创建IAuditable并更新 lastUpdateTimestamp属性时 IAuditable已更新。
希望能再多一点。