用方法替换.Equals而不是重写它合理吗
本文关键字:重写 方法 替换 Equals | 更新日期: 2023-09-27 18:27:06
我使用的是实体框架5,我试图覆盖.Equals和.GetHashCode
public class Students {
public int PersonId { get; set; }
public string Name { get; set; }
public int Age {get; set;}
public override bool Equals(object obj)
{
return this.Equals(obj as Students);
}
public bool Equals(Students other)
{
if (other == null)
return false;
return this.Age.Equals(other.Age) &&
(
this.Name == other.Name ||
this.Name != null &&
this.Name.Equals(other.Name)
);
}
public override int GetHashCode()
{
return PersonId.GetHashCode();
}
}
然而,我非常简单的方法似乎不起作用,我从EF那里得到了错误:角色的冲突更改
我认为这是由于英孚进行比较的方式。
有没有一种方法可以让我提供自己的方法,并以与.Equals相同的方式调用它?我在想也许我可以编写一个名为的方法。Same并使用它。这样做合理吗?如果我这样做了,并且我想比较两个对象,那么我怎么能对它进行编码和调用呢?
如果覆盖其中一个,则必须覆盖两者。
你可以在你的域中使用你想要的任何逻辑,但EF和其他人可能会使用默认值,你必须保持它们的一致性。