首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CQRS -复杂类型

问CQRS -复杂类型
EN

Stack Overflow用户
提问于 2019-02-12 15:44:01
回答 2查看 509关注 0票数 1

按照CQRS模式,是否允许在命令中添加复杂类型?(参见下面示例中的"Address"-class )

代码语言:javascript
复制
public interface ICommand{}

public class RegisterNewUser: ICommand{
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public List<Address> Addresses {get;set;}
}

public class Address{
    public string Street {get;set;}
    public string City {get;set;}
}

public class RegisterNewUserHandler: ICommandHandler<RegisterNewUser>{
    //Do some stuff
}

在我看来我会说是的..。但我想我见过其他人说你不能这么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-12 16:01:47

简而言之,我认为应该这样做,除非有人对此有充分的理由。

让我们这样看待它:我们有一个用户注册,他注册了他的三个附件,并点击保存按钮触发我们在服务器端的命令。很好,我们的应用程序现在将创建分成两个命令,一个命令保存另一个人,然后链接他们。

现在,在保存了我们的附件之后,我们的应用程序崩溃了(因为一些无关的原因),哦,不!我们现在有三个附件保存在我们的数据库,但没有用户。恭喜,我们的数据库现在以死数据为特色!

票数 1
EN

Stack Overflow用户

发布于 2019-02-12 18:30:16

按照CQRS模式,是否允许在命令中添加复杂类型?

是。

它变得非常复杂的地方:尝试修改存储在不同地方的类型。

因此,例如,如果您要在“用户存储库”中存储对用户的更改,以及对“地址存储库”中的地址的更改,并且您没有某种程度的保证存储库将被同一事务控制,那么您将开始遇到一致性问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54653782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档