查看帖子"Should Entities in Domain Driven Design and Entity Framework be the same?"时,接受的答案表明,在首先使用代码时,域实体和EF实体只能是相同的。这样实体就可以保持“纯粹”。
但是,由于这种情况:"Discussion on many-to-Many relationships (without CLR class for join table)",无法为产品实体集合创建订单实体,而无需为关联表(订单线实体)指定特殊实体。
我现在看到同事们将这些关联表纳入他们的域名实体,我觉得这是错误的,因为它暗示着要坚持持久性而不是真正的域名。在我看来,它们不再是“纯粹的”。
您是否会因为关联表实体而无法在EF Core中拥有相同的域实体?我如何在EF Core中解决这个问题?
答案 0 :(得分:1)
但是在常规/经典Ordering
域中,需要orderline
(或订单行项目或任何您想要调用的项目),因为您需要存储数量和产品ID上的商品价格。
在大多数DDD示例中,此项目从DDD角度来看是Value object
,从持久性角度来看是Entity
。如果您想知道Value对象如何成为ORM实体,您应该阅读Vaughn Vernon的书Persisting Value Objects
中的Implementing Domain Driven Design
。
但是,有些情况下,Domain模型不能与Persistence模型完全匹配100%。在这种情况下,需要将一些元信息附加到域模型以匹配持久性模型。通常,您有两种选择:
如果我必须选择,我倾向于选择注释域模型,但你应该自己做出决定。