gpt4 book ai didi

entity-framework - 臭名昭著的 Entity Framework ——聚合根问题

转载 作者:行者123 更新时间:2023-12-04 08:30:31 29 4
gpt4 key购买 nike

我偶然浏览过 StackOverflow、Google 和其他网站,但无法理解如何实现它的概念。

这里我有一个非常非常简单的模型:一个Item 和一个ItemActivity。很明显,Item 是聚合根,ItemActivity 是一个实体。

所以根据 DDD 原则,我应该只实现 ItemRepositoryItemRepository 除了它自己的 CRUD 操作之外,还应该管理其子实体的 ItemActivity 的 CRUD 操作。

这里有一些实现问题:

  1. 我应该在域中实现子实体操作还是存储库。
  2. 加载与项目相关的所有子实体或导航到它们可以使用 Entity Framework 。使用 .include(..) 加载根将做工作。但是更新 ItemActivity 甚至删除 ItemActivity?从集合中删除它们不会坚持。
  3. 假设我必须找到一个时间跨度内的所有事件。如何可以在我无法查询的情况下实现这样的查询吗ItemActivity 或更糟的是不存在任何ItemActivityRepository 完全没有。
  4. 是否有涵盖该主题的样本。有很多文章写了很多没有具体代码和理论的答案覆盖范围,但请问,是否有任何真实样本。我工作过Microsoft Spain N-Layered DDD Sample 但不够详细。

最好的问候。

最佳答案

1.Should I implement child entity operations in the domain or repository.

没有。存储库仅操纵聚合。

2.Loading all child entities related to an item or navigating to them is OK with Entity Framework. Loading the root with .include(..) will do the work. But what about updading an ItemActivity or even deleting an ItemActivity? Removing them from the collection does not persist.

  Item.getActivity().updateRemark("...");
ItemRepository.store(Item);

3.Assume that I have to find all activities within a time span.

如果需要按范围查询,最好将 ItemActivity 设为另一个聚合根。较小的聚合有助于这种情况。

4.Is there a sample covering this topic.

著名的Effective Aggregate Design .有一些示例代码(尤其是在第 1 部分中)与您的案例密切相关。

关于entity-framework - 臭名昭著的 Entity Framework ——聚合根问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704318/

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