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

时间:2011-07-09 23:54:58

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

我正在考虑如何构建我的应用程序的查询/读取层,我认为我要做的是创建数据库视图以展平模型并使用实体框架进行数据访问。 / p>

我的问题是,我应该允许我的控制器直接访问我的IQueryContext,这实际上只是抽象了EF上下文。或者我应该创建一个事务脚本样式查询服务,如ICustomerQueries包含所有相关的报告方法?或者每个查询都是它自己的概念并且存在于它自己的对象中,即; GetProductsByCustomerQuery

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

2 个答案:

答案 0 :(得分:2)

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

因此:通过EF或Linq2SQL公开你的平面化视图 - 以及后来的非规范化表格 - 并将它们绑定到你的UI(我甚至会走得很远,并且在这一点上需要一个ORM)。不需要进一步的抽象层。节省时间专注于核心域。

答案 1 :(得分:1)

我倾向于在查询端使用WCF数据服务。所以,我有一个Read数据库的Entity Framework模型,然后在其上创建一个WCF数据服务(只需几分钟),然后查询该WCF数据服务。

这很容易,它是一致的,您可以将其配置为只读访问,它支持LINQ甚至OData协议,以便您可以在URL中编写查询。

另见: