域驱动设计 – DDD – 实体应该有平等比较器

Eric Evans在
plural sight视频中说:“我已经开始相信一个实体甚至不应该进行平等比较”.

这是否意味着实体不需要具有必需的Id字段(因为其基础设施问题).在什么情况下需要实体比较?就像他在大多数情况下提到的那样,可能不需要它.

[编辑]当我提到不需要ID时,构建实体是w.r.t,即我可以用新对象(order = new Order)测试我的逻辑而不传递Guid或Id.理想情况下,db会生成持久性Id.

最佳答案 从理论上讲,实体不应该关心它的ID;当实体查询或使用自己的ID时,我现在脑海中不会出现用例.

但是,它的ID被外界使用.几乎任何使用实体的客户端代码(演示,应用程序或基础架构)都将使用其ID.如果没有ID,客户端代码将无法在所有实体的集合中找到实体.

甚至Domain层代码也使用该ID.例如,在Aggregate中,Aggregate root在找到嵌套的Entity时使用ID,即使它只是一个简单的整数键.

更新:
在现实世界中,作为一个人类实体,当你吃,喝,睡觉或独自做任何事情时,你是否需要你的社会安全号码(或你拥有的任何身份证)?不,它与人体有机体的工作规则无关.其他人类实体需要您将ID与其他人区分开来.

点赞