无法将类型为“MS.Internal.NamedObject”的对象强制转换为DoctorModel

时间:2015-07-20 22:48:35

标签: c# entity-framework-6

我有一个名为Doctor的实体类型,我创建了一个模型,以便我可以对实体中的项目使用INotifyPropertyChange。在我的名为DoctorModel的模型中,我有以下函数,它会给我一个例外:

  

无法将“MS.Internal.NamedObject”类型的对象强制转换为DoctorModel

    // OVERLOADED METHODS
    public override int GetHashCode()
    {
        return ID ^ 7;
    }

    public override bool Equals(object obj)
    {
        // Check for null  
        if (ReferenceEquals(obj, null))
            return false;
        // Check for same reference  
        if (ReferenceEquals(this, obj))
            return true;
        var model = (DoctorModel)obj;   <-- Exception HERE -->
        return this.ID == model.ID;
    }

编辑: 我正在创建一个这种类型的ObservableCollection,但是当我尝试删除一个元素时,它不会从中删除。我在一个网站上看到一篇文章,该文章表明在搭建我所描述的内容时会使用这种技术。我所指的文章如下:http://www.c-sharpcorner.com/UploadFile/tirthacs/remove-an-item-form-observable-collection-using-remove/

1 个答案:

答案 0 :(得分:2)

只需将我的解决方案发布到我的问题中,以防其他人可以从中受益。

public override int GetHashCode()
{
  return string.Format("DoctorModel{0}", this.ID.ToString()).GetHashCode();
}

public override bool Equals(object obj)
{
   var newObj = obj as DoctorModel;

   if (null != newObj)
   {
       return this.GetHashCode() == newObj.GetHashCode();
   }
   else
   {
       return base.Equals(obj);
   }
}