2

我正在使用 EF 4.3。为了扩展实体类的功能,我创建了部分类。这主要工作正常。

该框架创建一对多的导航属性作为哈希集,我需要更改其中的一些,因为它们包含用户在站点访问期间操作的项目列表。

理想情况下,我想做的是提供对 Equals 和 HashCode 的覆盖,但是代码不会编译,而是给出消息“找不到合适的方法来覆盖”。

这个问题有什么解决方法吗?

4

1 回答 1

0

您的问题中没有太多代码可以从 :) 开始,但通常要添加自定义 equlity 成员,您将创建部分类的第二部分并让它实现IEquatable<T>接口

如果这样做,还建议覆盖非泛型相等成员Equals()GetHashCode()of Object,您应该始终能够覆盖它们。也许异常是由您使用“HashCode”而不是“GetHashCode”引起的。

一个简单的例子:

public partial class EntityClass : IEquatable<EntityClass>
{
    public bool Equals(EntityClass other)
    {
        return this.Id == other.Id;
    }

    public override bool Equals(object other)
    {
        return (other is EntityClass)
            && this.Id == ((EntityClass)other).Id;
    }

    public override int GetHashCode()
    {
        return this.Id.GetHashCode();
    }
}
于 2012-08-17T14:57:45.707 回答