Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 查询/报告层设计问题(DDD/CQRS)_.net_Entity Framework_Domain Driven Design_Cqrs - Fatal编程技术网

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

.net 查询/报告层设计问题(DDD/CQRS),.net,entity-framework,domain-driven-design,cqrs,.net,Entity Framework,Domain Driven Design,Cqrs,我正在考虑如何为我的应用程序构建查询/读取层,我想我将要做的是创建数据库视图,以简化模型并使用实体框架进行数据访问 我的问题是,我是否应该允许我的控制器直接访问我的IQueryContext,这实际上只是对EF上下文的抽象。或者我应该创建一个事务脚本样式的查询服务,比如包含所有相关报告方法的ICCustomerQueries?或者每个查询都是自己的概念,存在于自己的对象中,即;GetProductsByCustomerQuery 任何帮助/想法/论点都会很棒 我会让查询端尽可能简单。我可能会为此

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

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


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

我会让查询端尽可能简单。我可能会为此而大发雷霆,但在我看来,尽可能接近原始SQL,在某些情况下甚至可以选择*FROM…,就足够了


因此:通过EF或Linq2SQL公开扁平化的视图,然后再公开非规范化的表,并将它们绑定到UI,我甚至会就此质疑ORM的需求。不需要进一步的抽象层。节省时间专注于核心领域。

我倾向于在查询端使用WCF数据服务。所以,我有一个Read数据库的实体框架模型,然后在上面创建一个只需几分钟的WCF数据服务,然后查询该WCF数据服务

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

另见:

小田: WCF数据服务:
为什么不跳过数据库视图并在EF中展平模型?因为我发现自己必须添加属性和关联,以便仅在域实体上显示。此外,如果它位于视图后面,我可以根据需要将其更改为从非规范化表中读取。@iwayno或简单的键/值存储。但是OP问我如何抽象数据库视图,我试图回答这个特定的问题。我仍然不相信复杂的报告+cqrs+es+read模型。你对那件事有什么看法吗,罗伊?wcf数据服务可以用于此目的吗?您的具体要求是什么,@csetzkom?这一切都基于此:我猜您并不真正了解未来的报告需求,因此必须创建一些通用的内容。我想,如果您告诉管理层,您将必须创建一个新的专用读取模型,并运行所有/大部分过去的事件,以完全满足新的报告需求,而不是编写sql查询,他们会告诉您走开。。。