Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用MediatR返回CQRS命令上的对象_Asp.net Core_Cqrs_Mediatr - Fatal编程技术网

Asp.net core 使用MediatR返回CQRS命令上的对象

Asp.net core 使用MediatR返回CQRS命令上的对象,asp.net-core,cqrs,mediatr,Asp.net Core,Cqrs,Mediatr,最近我一直在阅读有关MediatR和CQR的文章,我看到很多人说命令不应该返回域对象。它们可以返回值,但仅限于返回错误值、失败/成功信息和新创建实体的Id 我的问题是,如果命令只能返回新实体的Id,如何将这个新对象返回给客户机 1) 我应该用这个新Id再次查询数据库吗?如果是这样,我重新访问数据库以获取几秒钟前内存中的对象不是很糟糕吗 2) 返回由命令创建的实体的正确方法是什么?我认为更重要的问题是为什么不应该从命令返回域对象。如果这样做的原因对您来说似乎是一个有效的原因,那么您应该研究其他替代

最近我一直在阅读有关MediatR和CQR的文章,我看到很多人说命令不应该返回域对象。它们可以返回值,但仅限于返回错误值、失败/成功信息和新创建实体的Id

我的问题是,如果命令只能返回新实体的Id,如何将这个新对象返回给客户机

1) 我应该用这个新Id再次查询数据库吗?如果是这样,我重新访问数据库以获取几秒钟前内存中的对象不是很糟糕吗


2) 返回由命令创建的实体的正确方法是什么?

我认为更重要的问题是为什么不应该从命令返回域对象。如果这样做的原因对您来说似乎是一个有效的原因,那么您应该研究其他替代方法,例如在获取域对象的命令之后立即执行查询


但是,如果从命令返回域对象符合您的需要,并且不会带来任何直接问题,那么为什么不直接返回并保持简单明了呢

你能给我们看一下你写的代码吗?在命令响应中返回新创建的实体对我来说似乎是有效和简单的,我只是担心我对模式的理解不够,因为每个人都说命令不应该返回一个不是成功状态的结果,验证错误和新实体的id。我认为这不是问题,除非您开始使用事件源和分离数据存储以从数据存储中读取并持久化数据。如果不是这样的话,那么返回域模型很可能是好的。好的,在这种情况下,我可以理解为什么命令不应该返回域对象。