此方法用于比较对象的哪些字段? 我需要一个简单的方法来确定两个不同的EntityReference实例是否引用同一个实体。如果Equals()方法符合我的需要,我不想重新发明自行车。
MSDN只说Equals返回:
如果指定的EntityReference等于EntityReference,则为true 宾语;否则,错误。
答案 0 :(得分:3)
答案 1 :(得分:2)
MSDN for EntityReference显示6个属性(字段),其中只有3个 - Id (主键GUID),名称(显示值/主要属性)和逻辑名称(实体名称)是可取的。
同样名称是可以为空的属性,例如:插件中的targetentity将其作为null,而preimage将带来DB的值。其他3 - RowVersion,KeyAttributes& ExtensionData是元数据。
EntityReference.Equals(Object)被Object.Equals(Object)覆盖,其中包含:
来电者须知
派生类经常重写Object.Equals(Object)方法以实现值相等。此外,类型还经常为Equals方法提供额外的强类型重载,通常是通过实现IEquatable接口。当您调用Equals方法来测试相等性时,您应该知道当前实例是否重写Object.Equals并了解如何解析对Equals方法的特定调用。否则,您可能正在执行与您的预期不同的相等性测试,并且该方法可能会返回意外值。
因此,被覆盖的Equals方法仅考虑 Id 来决定相同的实体“记录”,并选择 LogicalName 来决定{{3}时相同的实体“类型” }。