590得票11回答
什么是聚合根?

我正在努力理解如何正确使用仓储模式。"聚合根" 这个概念一直出现在相关内容中。在搜索有关 "聚合根" 的帮助时,我发现讨论它们的文章很多,但是链接都已经失效了,没有基础定义。 在仓储模式的背景下,什么是聚合根?

35得票1回答
使用Entity Framework 4.1和父/子关系的仓储模式

我对仓储模式还有一些困惑。我想使用这种模式的主要原因是为了避免从域中调用EF 4.1特定的数据访问操作。我宁愿从IRepository接口调用通用的CRUD操作。这将使测试更加容易,如果我将来必须更改数据访问框架,我也可以这样做而不需要重构大量代码。 以下是我的情况示例: 数据库中有3个表...

29得票3回答
聚合根引用其他聚合根

我目前正在大量使用DDD,但在从其他聚合根加载/操作聚合根时遇到问题。 对于模型中的每个聚合根,我也有一个仓储库。该仓储库负责处理聚合根的持久性操作。 假设我有两个聚合根,具有一些成员(实体和值对象)。 AggregateRoot1和AggregateRoot2。 AggregateR...

26得票3回答
避免在领域驱动设计中使用工作单元模式。

我已阅读此内容,这让我三思... "避免使用工作单元模式。聚合根应该定义事务边界。" 为什么在应用领域驱动设计时应该避免使用工作单元模式?

25得票3回答
聚合根可以引用另一个聚合根吗?

我有点困惑。我刚刚看了Julie Lerman在Pluralsight上关于DDD的视频,以下是我的疑惑: 以一个简单的在线商店为例,其中包括: 采购订单中的商品供应商,那么这里的聚合根是什么? 从技术角度来看,采购订单是聚合根,对吧?它是针对特定的供应商并有商品。这是有意义的。 但是....

23得票3回答
只读数据库视图如何适配仓储模式?

例子:您的数据库有一个名为“CustomerOrdersOnHold”的SQL视图。该视图返回特定客户和订单数据字段的混合过滤结果。您需要在应用程序中从此视图获取数据。这样的视图访问如何适应存储库模式?您会创建一个“CustomerOrdersOnHoldRepository”吗?像这样的只读...

20得票5回答
DDD:实体在持久化之前的身份标识

在领域驱动设计中,实体的一个定义特征是它具有唯一标识。 问题: 我无法在实例创建时为实体提供唯一标识。这个标识只有在实体持久化之后由仓储库提供(这个值从底层数据库提供)。 我不能使用 Guid 值来解决这个问题。现有数据是使用 int 主键值存储的,我无法在实例化时生成唯一的 int。 ...

17得票1回答
更新聚合中的实体

我看到了一个类似的问题在SO上:如何更新聚合内的实体,但我仍然不确定用户界面应该如何与聚合内的实体交互。 假设我有一个User,拥有一些Address。User是聚合根,而Address只存在于聚合内部。 在网页界面上,用户可以编辑他的地址。基本上,发生以下情况: 用户在他的网页界面上...

16得票3回答
DDD:聚合根问题

假设我有两个实体 - Foo 和 Bar。Foo 是一个聚合根,包含 Bar。据我所知,它应该看起来像这样:public class Foo{ private readonly Bar Bar; } 我希望为用户提供从定义的列表中选择Bar对应于Foo的功能(并进行更改)。 如果存储...

16得票6回答
DDD - 聚合内子对象的修改

我在处理一个相当复杂的情况时遇到了一些困难。我看到过很多类似的问题,但没有一个能满足我的需求。 一个订单(聚合根)会创建多个订单行(子实体)。根据业务规则,每个订单行必须在整个订单生命周期内保持相同的标识。订单行有许多(20+)属性,并且在订单被“锁定”之前可能经常发生变化。此外,在根级别必...