【问题标题】:NHibernate set : Should I override Equals and GetHashCode?NHibernate 设置:我应该覆盖 Equals 和 GetHashCode 吗?
【发布时间】:2010-05-04 08:56:49
【问题描述】:

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

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

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

【问题讨论】:

标签: c# nhibernate nhibernate-mapping equals gethashcode


【解决方案1】:

你不一定要遇到这个问题,看看AbstractEntity in uNhAddIns(它实现了EqualsGetHashCode

【讨论】:

  • 所以答案是,应该为实体覆盖 Equals 和 GetHashCode ?
  • 是的,建议您覆盖它们。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多