NHibernate集合:我应该重写Equals和GetHashCode吗?

4
我是NHibernate的新手。我正在使用<set ...>映射来处理一些多对一和多对多关联。这些关联被公开为ICollection<T>类型的属性,实际上由HashSet<T>实现。
我的问题是,我应该覆盖相关类型的Equals和GetHashCode方法,使它们与类型的数据库标识匹配(实际上是当Id属性相等时对象相等)吗?还是NHibernate会以某种方式为我处理这个问题?
如果我这样做,我发现一个问题,即如果我想在任何时候插入多个值到多对多集合中,因为新元素可能具有Guid.Empty的Id;因此被认为是相同的项。

2
http://nhforge.org/doc/nh/en/index.html#persistent-classes-equalshashcode - cbp
2个回答

2
您不一定要遇到那个问题,可以看看在uNhAddIns中实现了EqualsGetHashCodeAbstractEntity

那么答案是,对实体应该重写Equals和GetHashCode方法吗? - driis
是的,建议您覆盖它们。 - Mauricio Scheffer

1
如果您从两个不同的Nhibernate会话中加载对象,则需要覆盖Equals / GetHashCode。请查看Nhibernate手册manual

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接