4

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

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

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

4

2 回答 2

2

你不必遇到这个问题,看看AbstractEntityuNhAddIns(它实现EqualsGetHashCode

于 2010-05-04T13:28:51.950 回答
1

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

于 2013-03-13T20:14:45.283 回答