【发布时间】:2021-12-23 01:31:30
【问题描述】:
我仍在学习清洁架构,现在我正在尝试在项目中实现事件溯源。
我有 2 个项目,一个包含命令和事件,一个是域模型。
根据干净架构的定义,域模型是一切的中心。一切都参考他。
但是,我发现的所有示例都表明域模型对每个事件都有 Apply 方法。
我需要在域模型中这样做吗?还是有其他方式?
在代码中的某些地方,我需要从类似这样的事件中重建域模型:
public void Load(events){
foreach(var event in events)
{
Apply(event);
}}
这应该在领域模型类中,例如Apply 方法。
Apply 方法改变领域模型的内部状态。
【问题讨论】:
-
您能否提供一些代码示例,让我们更容易想象?干杯
-
这个范围很广。显然,在编程中有成千上万种方法可以做任何事情。您显然正在阅读一本书或从某个来源学习,并假设我们都知道您在说什么。请edit您的问题为您的问题提供更多背景信息。
-
“但是,我发现的所有示例都表明域模型对每个事件都有 Apply 方法。” - 为什么会有“但是”?您还会如何将更改应用到您的域模型?
-
啊,好的。我认为这个例子实际上有助于理解你的误解。请参阅(域)模型应该保持域的 当前 状态。如果您启动系统,它没有状态或空白状态,如果您愿意的话。所以你需要给它一个种子来预热它,然后对该状态执行所有历史更改,直到你拥有当前状态。
-
@milandjukic88 这不仅“可以”,而且您需要拥有这些。否则,您将无法执行称为“重放”的操作。
标签: c# domain-driven-design event-sourcing clean-architecture