.net - 查询/报告层设计问题(DDD/CQRS)

标签 .net entity-framework domain-driven-design cqrs

我正在考虑如何为我的应用程序构建查询/读取层,我认为我要做的是创建数据库 View 来展平模型并使用 Entity Framework 进行数据访问。

我的问题是,我是否应该允许我的 Controller 直接访问我的 IQueryContext,它本质上只是抽象 EF 上下文。或者我应该创建一个事务脚本样式查询服务,例如包含所有相关报告方法的 ICustomerQueries?或者也许每个查询都是它自己的概念并且存在于它自己的对象中,即;按客户查询获取产品

任何帮助/想法/论据都会很棒!

最佳答案

我会让查询端尽可能简单。我可能会因此而受到批评,但在我看来,尽可能接近原始 SQL,在某些情况下甚至到 SELECT * FROM ... 可能就足够了。

因此:通过 EF 或 Linq2SQL 公开您的扁平化 View ,以及后来的非规范化表,并将它们绑定(bind)到您的 UI(此时我什至会质疑是否需要 ORM)。不需要进一步的抽象层。节省时间专注于核心领域。

关于.net - 查询/报告层设计问题(DDD/CQRS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638273/

相关文章:

c# - 使用 Entity Framework 将项目添加到集合

c# - LINQ - 不返回与 SQL Server 相同的值

c# - String.Join 与字符串连接 : Code Improvement

c# - Linq 查询的复杂性限制

c# - T4 - Entity Framework 错误 : Method not found: 'System.Data.Entity.DbSet` 1

c# - Asp.Net MVC 使用参数执行 Oracle PL/SQL 存储过程

c# - 选择什么 .NET 版本?

c# - Entity Framework 模型第一个导航属性添加无效的列名来查询?

domain-driven-design - EventSourcing 网关(与外部系统同步)

design-patterns - 将两个域对象组合到一个 View 中