我正在使用 EF 4.3。为了扩展实体类的功能,我创建了部分类。这主要工作正常。
该框架创建一对多的导航属性作为哈希集,我需要更改其中的一些,因为它们包含用户在站点访问期间操作的项目列表。
理想情况下,我想做的是提供对 Equals 和 HashCode 的覆盖,但是代码不会编译,而是给出消息“找不到合适的方法来覆盖”。
这个问题有什么解决方法吗?
我正在使用 EF 4.3。为了扩展实体类的功能,我创建了部分类。这主要工作正常。
该框架创建一对多的导航属性作为哈希集,我需要更改其中的一些,因为它们包含用户在站点访问期间操作的项目列表。
理想情况下,我想做的是提供对 Equals 和 HashCode 的覆盖,但是代码不会编译,而是给出消息“找不到合适的方法来覆盖”。
这个问题有什么解决方法吗?
您的问题中没有太多代码可以从 :) 开始,但通常要添加自定义 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();
}
}