gpt4 book ai didi

c# - 具有 MediatR 的 CQRS 和命令的可重用性

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:36 27 4
gpt4 key购买 nike

创建仅包含对象的命令是否有意义?例如:

public class CreateCommand : IRequest
{
SomeDTO SomeDTO { get; set; }
}

public class UpdateCommand : IRequest
{
SomeDTO SomeDTO { get; set; }
}

或者可能是这样的(推导):

public class UpdateCommand : SomeDTO, IRequest
{
}

或者命令/请求本身应该被视为 DTO?我很困惑,因为我看到了很多做事的方法。将所有属性复制到命令/请求类听起来也不是一件好事。

您如何在您的项目中做到这一点?

您是将命令直接映射到领域模型,还是仅使用命令来传递 DTO?

在使用 MVC 框架的情况下,我的 Controller 操作的输入应该是什么?它应该是一个命令,还是应该在我的操作实现中创建命令并发送它? (我想这将取决于我如何为我的命令建模)

最佳答案

Does it make sense to create commands that just hold objects?

不,额外的类没有增加任何值(value):没有语义,没有行为......

Or commands/requests should be treated as DTOs themselves?

命令(在术语的 CQRS sense 中)本质上是 DTO。它们是在层/层之间循环的哑数据包。

Do you map your commands directly to your domain models

这取决于您是否喜欢 task-based UI通过基于 CRUD 的 UI。如果你做 DDD/富域模型——有些人甚至会说基本的 OO 封装——你就不会映射它们。命令名称可能会匹配实体方法,但它们的内容不会自动映射到领域模型字段。

In case of using MVC framework what should be the input of my controller actions? Should it be a command, or should I create command inside my action implementation and send it?

我会说两者都是合法且适用的,除了 MVC 模型绑定(bind)偶尔出现的技术怪癖。

关于c# - 具有 MediatR 的 CQRS 和命令的可重用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50908260/

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