问题标签 [aggregates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
596 浏览

model-view-controller - 如何在 MVC 模式中表示域聚合?

我应该为聚合中的每个对象创建一个单独的类,还是这些对象应该是单个聚合类的嵌套类?

0 投票
3 回答
4305 浏览

domain-driven-design - 领域驱动设计 - 聚合根

我正在与聚合和聚合根作斗争。我有一个自然聚合根,它适用于大约 60% 的用户请求。即这些请求自然适用于聚合根。

在我的聚合中,我有另一个实体,它只能作为聚合根的成员存在。然而,用户将被告知这个其他实体对象。从概念上讲,有时用户直接对这个非聚合根对象进行操作是有意义的。

所以,我想我有几个选择:

  1. 根据用户请求的操作,它们都可以是聚合根。
  2. 所有操作都必须经过顶级聚合根。

请注意,顶级聚合根将保存此其他实体的集合。


例子:

主骨料根:车

第二个实体:座位(根据类型,汽车有 2 个或 4 个座位)。在我的域中,座位只能作为汽车的一部分存在。

域中的大多数操作都在 Car 级别。所以这将是聚合根的一个很好的候选者。然而,(我在这里举个例子很困难),一些操作将在座位级别,例如 SpillCoffee、ChangeFabric、Clean...。

Seat 和 Car 都可以是聚合根吗?还是我应该总是从 Car 开始?

谢谢

0 投票
3 回答
7146 浏览

c# - Linq - 在一个查询中计算多个平均值

我正在尝试将一些 SQL 查询转换为 Linq,以避免多次访问数据库。

我试图转换的旧 SQL 是:

所以我创建了两个 C# 类:

而且我有一个List<A>要查询的对象。它是从数据库中填充的,因此列表中的每个 A 都有一个带有 B 负载的子列表。我想使用 Linq-to-objects 来查询这个列表。

所以我需要使用 Linq 来获取 A 开始和完成其子 B 之间的平均时间,以及每个 B 开始和完成之间的平均时间。我没有编写原始 SQL,所以我不完全确定它是否能完成它应该做的事情!

我有几个这样的平均值要计算,所以我想在一个神奇的 Linq 查询中完成它们。这可能吗?

0 投票
3 回答
481 浏览

domain-driven-design - 获取域实体的附加数据

我有一个域聚合,称之为“订单”,其中包含一个订单行列表。订单跟踪订单行上的金额总和。客户有一个正在运行的“信用”余额,他们可以从中订购,这是通过汇总他们的数据库交易历史来计算的。一旦他们用完“池”中的所有钱,他们就不能再订购任何产品了。

因此,每次在订单中添加一行时,我都需要检查池中还剩下多少,以及订单是否将它们推过它。池中的数量不断变化,因为其他相关客户不断使用它。

问题是,从 DDD 的角度考虑,我如何获得这个数量,因为我不想用 DataContext 问题污染我的域层(在此处使用 L2S)。由于我不能只从域中查询到数据库,我将如何获取该数据以便验证业务规则?

这是使用领域事件的实例吗?

0 投票
3 回答
3332 浏览

domain-driven-design - DDD:聚合根

我需要帮助来找到我的聚合根和边界。

我有 3 个实体:Plan、PlannedRole 和 PlannedTraining。每个计划可以包括许多 PlannedRoles 和 PlannedTrainings。

解决方案 1:起初我认为 Plan 是聚合根,因为 PlannedRole 和 PlannedTraining 在计划的上下文之外没有意义。他们总是在一个计划之内。此外,我们有一条业务规则,规定每个计划最多可以有 3 个 PlannedRoles 和 5 个 PlannedTrainings。所以我想通过将计划指定为聚合根,我可以强制执行这个不变量。

但是,我们有一个搜索页面,用户可以在其中搜索计划。结果显示了计划本身的一些属性(并且没有任何 PlannedRoles 或 PlannedTrainings)。我想如果我必须加载整个聚合,它会产生很多开销。有近 3000 个计划,每个计划可能有几个孩子。将所有这些对象一起加载,然后在搜索页面中忽略 PlannedRoles 和 PlannedTrainings 对我来说没有意义。

解决方案 2:我刚刚意识到用户还需要 2 个搜索页面,他们可以在其中搜索计划角色或计划培训。这让我意识到他们正在尝试独立访问这些对象并且“脱离”Plan 的上下文。所以我认为我最初的设计是错误的,这就是我想出这个解决方案的原因。所以,我认为这里有 3 个聚合,每个实体 1 个。

这种方法使我能够独立搜索每个实体,还解决了解决方案 1 中的性能问题。但是,使用这种方法我无法强制执行我之前提到的不变量。

还有另一个不变量表明计划只有在它具有特定状态时才能更改。因此,我应该无法将任何 PlannedRoles 或 PlannedTrainings 添加到不在该状态的计划中。同样,我无法使用第二种方法强制执行此不变量。

任何建议将不胜感激。

干杯,莫什

0 投票
1 回答
876 浏览

ssis - 行计数组件的聚合模拟?

我想有一种方法可以从数据流任务内部获取存储到变量中的字段的总和。行计数转换可以做到这一点,但我看不到如何使用任何其他聚合函数。编写转换组件脚本是我最好的选择吗?

0 投票
2 回答
1067 浏览

sql - Django - 计算相关模型的子集 - 需要为每个项目注释活动优惠券的数量

我有一个优惠券模型,它有一些字段来定义它是否处于活动状态,以及一个只返回实时优惠券的自定义管理器。优惠券对物品有一个 FK。

在对 Item 的查询中,我试图注释可用的有效优惠券的数量。但是,Count 聚合似乎正在计算所有优惠券,而不仅仅是活动优惠券。

和位有其他原因 - 查询是这样的.distinct()distinct=True它将返回重复项。这一切都很好,只是为了完整起见在这里提到它。

问题在于Count包含被自定义管理器过滤掉的非活动优惠券。

有什么方法可以指定Count应该使用live管理器吗?


编辑

以下 SQL 查询正是我所需要的:

至少在sqlite上。任何 SQL 大师的反馈都将不胜感激 - 我觉得我在这里编程是偶然的。或者,更好的是,翻译回 Django ORM 语法会很棒。

0 投票
1 回答
276 浏览

domain-driven-design - 放置域逻辑以更新聚合根的子级的合适位置在哪里?

直接更新聚合根的子节点是最佳做法,还是仅通过其聚合根更新?例如,这是首选:

或者

本部门的任何指导将不胜感激。

0 投票
1 回答
1353 浏览

domain-driven-design - 如何从关系模型中定义聚合根以便将其用于 DDD?

我已经看了相当长一段时间的其他帖子,相对于聚合根。似乎我根本不明白如何以正确的方式定义聚合根。我看到诸如聚合根之类的答案可能不是聚合根,反之亦然。我有点困惑。问题是我脑子里有关系模型,但我知道 DDD 不会那样做。

有没有办法从关系模型中定义聚合根?

例如,如果您有一个包含日记条目的日记,每个日记条目都包含任务、问题和注释

您将如何定义聚合根?根是期刊吗?但如果您想访问笔记、问题和任务,这可能会导致问题。那么这些也聚合了引用日记帐条目的根吗?

它的东西很难理解,我想有更多的澄清。

谢谢。

0 投票
3 回答
124 浏览

sql-server-2005 - 查询缺失元素

我有一个具有以下结构的表:

现在我正在寻找的是一个查询,它将为我提供每个名称的值的总和,并将其间的空值(按时间戳排序)视为列表中的第一个非空名称,就好像表是如下:

我会查询SUM(value), name from this table group by name。我已经思考并尝试过,但我无法提出适当的解决方案。我看过递归公用表表达式,并认为答案可能就在那里,但我无法正确理解这些。

这些表只是示例,我事先并不知道时间戳值。

有人可以帮帮我吗?帮助将不胜感激。