1
我使用EF 4.3。为了扩展实体类的功能,我创建了部分类。这在主要工作正常。替代等于部分类
框架创建1到许多导航属性作为散列集,我需要更改其中的一些,因为它们包含用户在网站访问期间操作的项目列表。
理想情况下,我想要做的是提供覆盖Equals和HashCode,但代码不会编译,而是给出消息“找不到合适的方法覆盖”。
这个问题是否有任何解决方法?
我使用EF 4.3。为了扩展实体类的功能,我创建了部分类。这在主要工作正常。替代等于部分类
框架创建1到许多导航属性作为散列集,我需要更改其中的一些,因为它们包含用户在网站访问期间操作的项目列表。
理想情况下,我想要做的是提供覆盖Equals和HashCode,但代码不会编译,而是给出消息“找不到合适的方法覆盖”。
这个问题是否有任何解决方法?
问题中没有太多的代码是从:)开始的,但通常要添加自定义等式成员,您将创建部分类的第二部分并让它实现IEquatable<T>
interface。
如果您这样做,建议覆盖Object
的非通用相等成员Equals()
和GetHashCode()
,这应该始终能够覆盖。也许这个异常是由你使用“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();
}
}
工作的问题了。由于缺少代码中的Equals(object other)部分,但错误消息有点误导。 – dotnetnoob 2012-08-17 16:21:04