ASP.NET Core DDD 使用请求 ViewModel 更新域模型

ASP.NET Core DDD Update domain model using the request ViewModel

我正在学习 DDD 模式,我有以下问题。

在我的 [HttpPut] API 端点上,我有一个请求命令模型,其中包含一些用于更新域模型聚合根的属性。

现在使用 DDD 更新我的域模型的正确方法是什么。

  1. 创建映射所有请求命令属性的域模型的新对象,并在更新方法中使用该对象Update(Model model)。然后只更新为更新填写的属性。

  2. 只需要在update方法中将所有属性一一传递即可Update(string prop1, string prop2, bool prop3).

  3. 创建一个表示所有属性的新域模型以进行更新 Update(UpdateModel model)

我认为你有点忽略了这里的重点。 DDD 战术模式与 CRUD 互斥。如果您的系统中仅有的命令是创建、更新和删除,那么您将无法从聚合和丰富模型等 DDD 战术模式中受益。

首先要做的是问问自己,您是否没有错误地在本质上不是 CRUD 的域中强制使用 CRUD 模型。如果您正在考虑重构 task-based UI & avoid an anemic domain model.

如果 CRUD 自然适合您的域(或子域),那么您可能会选择不太严格的架构。例如,您可以使用自动映射(或显式映射器)将命令数据映射到服务中的实体(吸气剂和 setter 包)。

您还可以将命令直接传递给实体并让它映射值,例如 entity.update(command)。我是 ,但就像我对 CRUD 所说的那样,这是您可以做出的纯粹让步以保持务实,因为您主要是在设计一个美化的数据库编辑器。