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.
中
例如,如果您的数据库坚持使用主键,您可能会想到 OrderId
和 ProductId
或其他一些有意义的组合。即使是 UniqueIdentifier
之类的合成键也可以,因为该字段也将从域中排除。
考虑 Order/Orderline 的情况,其中 Orderline 是一个 VO 集合,在这种情况下,将 Orderline 持久化到数据库需要一个单独的 table 和它自己的一组行,作为一个 VO 这可以'如果没有 DDD 的 id,考虑到用于持久性的 ORM,如何解决这种不匹配问题。 (示例的有效性是主观的,但在这个凌晨无法想出更好的方法,请原谅)
OrderLine
table 肯定 不需要 Id,因为它只需要与相关的 Order
相关联。 OrderId
将包含在 OrderLine
table 中,但 不会 包含在 OrderLine
VO 中,因为它是不必要的,因为该关联包含在 Order
AR.
例如,如果您的数据库坚持使用主键,您可能会想到 OrderId
和 ProductId
或其他一些有意义的组合。即使是 UniqueIdentifier
之类的合成键也可以,因为该字段也将从域中排除。