我的问题与CQRS(命令和查询责任隔离)和构建阅读模型(视图)的机制有关.据我所知,读模型是由事件处理程序构建的.这些处理程序(也称为非规范化程序)接收域事件并使用这些事件来构建不
特定事件包含有关域模型中所做更改的信息.我认为这些信息在某些情况下不足以构建视图 – 即没有更改的字段,在这种情况下没有更改的实体丢失等.
所以我的问题是:
是否允许负责构建读取模型的非规范化器不仅访问事件,还允许:
>直接引用更改的实体
在事件?
>更改了聚合根和任何
与此汇总相关的实体?
>从存储库中获取的任何实体?
>任何观点?
您对事件处理程序(非规范化程序)的允许依赖关系有何看法?
编辑:刚刚在上面的问题中添加了简单示例:
假设以下模型:
AR:ProductOffering
* 名称
*描述
*类别
* 价钱
AR:客户
* 名称
*类型
*方法:发出的purchaseProduct(productOffering)
ProductPurchasedByCustomer活动
实体:ProductInstance
*客户
* productOffering
事件:ProductPurchasedByCustomer
* 顾客ID
* productOfferingId
view:ProductInventoryView
* 顾客ID
* productOfferingId
* 客户类型
* productOfferingName
* productOfferingCategory
* 价钱
如何仅使用ProductPurchasedByCustomer事件构建ProductInventoryView?如何编写denormalizer以查看有关customerType,productOfferingName等的信息?
我应该从不同的视图中查找有关customerType和productOfferingName的其他信息吗?