我正在考虑如何为我的应用程序构建查询/读取层,我认为我要做的是创建数据库 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/