2012-08-17 82 views
1

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

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

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

这个问题是否有任何解决方法?

回答

0

问题中没有太多的代码是从:)开始的,但通常要添加自定义等式成员,您将创建部分类的第二部分并让它实现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(); 
    } 
} 
+0

工作的问题了。由于缺少代码中的Equals(object other)部分,但错误消息有点误导。 – dotnetnoob 2012-08-17 16:21:04