【发布时间】:2015-09-06 15:14:04
【问题描述】:
我查看了这些帖子,但没有找到合适的答案:
CQRS: Read model built on demand?
CQRS: business logic on the query side
我对基于 CQRS 的架构感到困惑。我知道查询端应该有一个精简的数据访问层,但是在我的项目中,我需要根据来自其他域对象的元数据来调整查询。
在互联网上的几篇文章中,报告数据库中的每个视图都有一个表。因此,您只需要一个像“SELECT * FROM Tablename WHERE...”这样的 SQL 命令。这在这里不合适,因为查询返回的列应该是可定制的(通过列过滤器)。
这应该如下工作:
- 查询由客户端调用,包含行的过滤器 ID(WHERE 部分)和列的另一个过滤器 ID(SELECT 部分)。
- QueryHandler 根据从域服务中提取的信息(基于两个过滤器的 ID)构建 SQL 查询
- 对数据库执行查询并将结果返回给客户端
我正在努力解决的是第 2 步中对域服务的依赖。对我来说,由于查询和命令端之间的分离,这不应该是这样。
这是处理这个问题的一种可接受的方法,还是有另一种方法可以将这两个方面分开?
【问题讨论】:
标签: architecture cqrs