【问题标题】:What should I call a method checking if two entities refers the same db entity?如果两个实体引用同一个数据库实体,我应该调用什么方法?
【发布时间】:2010-11-26 09:26:07
【问题描述】:

我有与数据库同步的实体对象。我通常在三种不同的比较中使用这些实体:

  1. 检查两个实体对象是否是同一个 CLR 对象。
  2. 检查两个实体对象的所有属性是否相等。
  3. 检查两个实体对象是否引用同一个数据库实体,即使某些属性不同。

对于 1,我使用 Object.ReferenceEquals()。 对于 2,我覆盖 Equals() 检查所有属性。 对于3,我有点不一致。一些实体有一个“匹配”方法,一些有一个“IsSame”方法。该方法的逻辑比较它们的主键,如果还没有被数据库分配,它们的辅助键(如果有的话)。

如果我使用 Equals 比较键(例如,我可以只使用 Contains() 检查列表),很多代码场景会更容易,但如果 Equals 只比较键而不检查,我会觉得很混乱所有属性。

我的场景是一个具有自我跟踪实体的 N 层系统。我经常需要使用来自另一层的更新实体来更新实体列表或类似列表。

对于检查两个实体是否引用同一个逻辑实体的方法命名是否存在共识? KeyEquals()? SameEntity()?

【问题讨论】:

    标签: c# .net coding-style


    【解决方案1】:

    DbEquivalent()?

    【讨论】:

    • 还不错,但提到它们在数据库中的持久性可能有点太具体了。实体共享的是它们的密钥,它们指的是同一个“物理”事物,但存储在数据库中更加“巧合”。
    • @Holstebroe:就我而言,每当我使用 id 时,都是因为我要对数据存储区做点什么。我不同意具有相同 ID 的两个实体是相同的“物理”事物,ID 是数据存储级别的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多