【发布时间】:2010-11-26 09:26:07
【问题描述】:
我有与数据库同步的实体对象。我通常在三种不同的比较中使用这些实体:
- 检查两个实体对象是否是同一个 CLR 对象。
- 检查两个实体对象的所有属性是否相等。
- 检查两个实体对象是否引用同一个数据库实体,即使某些属性不同。
对于 1,我使用 Object.ReferenceEquals()。 对于 2,我覆盖 Equals() 检查所有属性。 对于3,我有点不一致。一些实体有一个“匹配”方法,一些有一个“IsSame”方法。该方法的逻辑比较它们的主键,如果还没有被数据库分配,它们的辅助键(如果有的话)。
如果我使用 Equals 比较键(例如,我可以只使用 Contains() 检查列表),很多代码场景会更容易,但如果 Equals 只比较键而不检查,我会觉得很混乱所有属性。
我的场景是一个具有自我跟踪实体的 N 层系统。我经常需要使用来自另一层的更新实体来更新实体列表或类似列表。
对于检查两个实体是否引用同一个逻辑实体的方法命名是否存在共识? KeyEquals()? SameEntity()?
【问题讨论】:
标签: c# .net coding-style