gpt4 book ai didi

domain-driven-design - DDD - 聚合根加载/查询性能

转载 作者:行者123 更新时间:2023-12-04 15:26:33 34 4
gpt4 key购买 nike

我在玩 DDD 时弹出了这个问题。我如何加载子聚合根?会出现几个性能问题。想象一下以下示例:

public AggregateRoot1
{
#region
properties
#endregion

public AggregateRoot2 AR2{get;set;}

public IEnumerable<AggregateRoot3> AR3List{get;set;}

(...)
}

如果我在获取 AggregateRoot1 时加载 AggregateRoot2 和 AggregateRoot3 列表,则该图会很大。这似乎不是一个好方法。

我有两个选择:

  1. Guid AR2Id 替换 AggregateRoot2 AR2,用 IEnumerable Guid> AR3ListIds 替换 IEnumerable AggregateRoot3> AR3List。所有 AR 引用都应替换为 ID。
  2. 因为我不喜欢 IEnumerable ARListIds 方法,所以我正在考虑删除 0...* 对 AR 的引用。所有需要 AR 列表数据的操作都应该通过像 David Masters 这样的领域服务来完成 here

顺便说一句,我不考虑使用延迟加载。

我期待听到您对 child AR 加载的意见。谢谢

最佳答案

理想情况下,聚合之间的引用应该仅通过标识。这是选项 1。但是,您应该评估每个引用,看看它是否需要引用控股合计的一致性。有时,两个聚合之间的关系本身可以成为一个聚合以单独加载。总体来看Effective Aggregate Design by Vaughn Vernon用于深入分析设计聚合时的各种权衡。这也是 David Masters 在链接问题中指出的内容。

关于domain-driven-design - DDD - 聚合根加载/查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386047/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com