Architecture 域模型-标识符关系与层次对象

Architecture 域模型-标识符关系与层次对象,architecture,domain-driven-design,domain-model,Architecture,Domain Driven Design,Domain Model,在充实一个假设的域模型时,我发现自己在想,在关联域对象时,更好的方法是让父域对象包含指针(子对象的标识符),还是使用子对象在父对象内构建复合对象更好 我可以看出每种方法的优缺点,主要是在规模和复杂性之间进行权衡,归结起来就是这样。我倾向于更倾向于标识符关系方法,因为我预计不需要进行任何类型的延迟加载 虽然没有直接关系,但域对象是简单的POCO(.NET等效于POJO)。它们被显式标记为可序列化,因为它们很有可能最终会跨应用程序域。LINQ使关系标识符的方法可行,在我看来,如果LINQ不可用,我将

在充实一个假设的域模型时,我发现自己在想,在关联域对象时,更好的方法是让父域对象包含指针(子对象的标识符),还是使用子对象在父对象内构建复合对象更好

我可以看出每种方法的优缺点,主要是在规模和复杂性之间进行权衡,归结起来就是这样。我倾向于更倾向于标识符关系方法,因为我预计不需要进行任何类型的延迟加载

虽然没有直接关系,但域对象是简单的POCO(.NET等效于POJO)。它们被显式标记为可序列化,因为它们很有可能最终会跨应用程序域。LINQ使关系标识符的方法可行,在我看来,如果LINQ不可用,我将不考虑它。 任何想法都将不胜感激


编辑:还有一些想法可能会让我倾向于只使用标识符的方法。首先是对象的缓存策略。父对象和子对象完全可能有不同的TTL,这是由它们的策略定义的。第二种可能是引用持有可能会限制对象重用,因为同一个子对象可能由多个父对象持有——在可重用数据的情况下。这两个参数也与序列化对象的总体大小有关。

我在POCO上使用这两个参数。我使用父类上的子类列表和子类上的一个父实例生成它们。

我在我的POCO上使用这两个实例。我使用父类上的子类列表和子类上的一个父实例生成它们。

我的一位开发人员也有同样的想法。我用补充资料修改了我的问题。如何处理缓存和并发性问题以及您持有的引用?对于我必须小心处理并发性的实体,我使用时间戳,并将它们包含在更新的where子句中。如果更新不影响任何行,那么我知道是别人先做的。我的一个开发人员也有同样的想法。我用补充资料修改了我的问题。如何处理缓存和并发性问题以及您持有的引用?对于我必须小心处理并发性的实体,我使用时间戳,并将它们包含在更新的where子句中。如果更新不影响任何行,那么我知道是其他人先做的。