DDD - 聚合中的值对象集合导致数据库阻抗不匹配

DDD - Value object collection in aggregate results in DB impedance mismatch

考虑 Order/Orderline 的情况,其中 Orderline 是一个 VO 集合,在这种情况下,将 Orderline 持久化到数据库需要一个单独的 table 和它自己的一组行,作为一个 VO 这可以'如果没有 DDD 的 id,考虑到用于持久性的 ORM,如何解决这种不匹配问题。 (示例的有效性是主观的,但在这个凌晨无法想出更好的方法,请原谅)

OrderLine table 肯定 不需要 Id,因为它只需要与相关的 Order 相关联。 OrderId 将包含在 OrderLine table 中,但 不会 包含在 OrderLine VO 中,因为它是不必要的,因为该关联包含在 Order AR.

例如,如果您的数据库坚持使用主键,您可能会想到 OrderIdProductId 或其他一些有意义的组合。即使是 UniqueIdentifier 之类的合成键也可以,因为该字段也将从域中排除。