C# NHibernate集合:我应该覆盖Equals和GetHashCode吗?

C# NHibernate集合:我应该覆盖Equals和GetHashCode吗?,c#,nhibernate,nhibernate-mapping,equals,gethashcode,C#,Nhibernate,Nhibernate Mapping,Equals,Gethashcode,我是NHibernate的新手。我正在为一些多对一和多对多关联使用映射。它们作为ICollection类型的属性公开,实际上是由HashSet实现的 我的问题是,我是否应该覆盖相关类型的Equals和GetHashCode,以便它们与类型的数据库标识相匹配(实际上,当Id属性相等时,对象是相等的)?还是NHibernate以某种方式为我处理这件事 如果我这样做,我会发现一个问题,如果我想在多对多集合中同时插入多个值,因为新元素的Id可能是Guid.Empty;因此被视为同一项。如果从两个不同的N

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

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


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

如果从两个不同的Nhibernate会话加载对象,则不必遇到该问题,请查看(它实现了
Equals
GetHashCode

重写Equals/GetHashCode。看看Nhibernate

所以答案是,应该为实体重写Equals和GetHashCode?是的,建议您重写它们。