NHibernate设置:我应该重写Equals和GetHashCode吗?

时间:2010-05-04 08:56:50

标签: c# nhibernate nhibernate-mapping equals gethashcode

我是NHibernate的新手。我正在使用< set ...>映射一些多对一和多对多关联。这些作为ICollection< T>类型的属性公开,实际上由HashSet< T>实现。

我的问题是,我应该为相关类型重写Equals和GetHashCode,以便它们匹配类型的数据库标识(实际上,当Id属性相等时,对象是相等的)?或者NHibernate会以某种方式为我处理这个问题吗?

如果我这样做,如果我想在任何时候在多对多集合中插入多个值,我会发现一个问题,因为新元素的ID可能是Guid.Empty;因此被认为是同一个项目。

2 个答案:

答案 0 :(得分:2)

您无需遇到问题,请查看AbstractEntity in uNhAddIns(实施EqualsGetHashCode

答案 1 :(得分:1)

如果要从两个不同的Nhibernate会话加载对象,则覆盖Equals / GetHashCode。查看Nhibernate manual