Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Asp.net mvc 3 DDD报告场景_Asp.net Mvc 3_Entity Framework_Domain Driven Design - Fatal编程技术网

Asp.net mvc 3 DDD报告场景

Asp.net mvc 3 DDD报告场景,asp.net-mvc-3,entity-framework,domain-driven-design,Asp.net Mvc 3,Entity Framework,Domain Driven Design,我正在尝试创建一个使用MVC3、EF和DDD方法的报告/分析web应用程序。我很难为现有数据库上的聚合表提供实体或对象类。例如,我将订单和订单行作为聚合,将客户作为实体。这三个对象可以使用DDD方法建模,但是如果我想要一个OrdersAggregate表,该表将包含所有细节,如客户名称、付款类型等,该怎么办 我应该在这里创建一个包含customername、payment type等属性的对象类,还是让EF创建他的sql查询并连接相关表?我很担心这里的性能,这将在云上部署,大量事务等待处理 有什

我正在尝试创建一个使用MVC3、EF和DDD方法的报告/分析web应用程序。我很难为现有数据库上的聚合表提供实体或对象类。例如,我将订单和订单行作为聚合,将客户作为实体。这三个对象可以使用DDD方法建模,但是如果我想要一个OrdersAggregate表,该表将包含所有细节,如客户名称、付款类型等,该怎么办

我应该在这里创建一个包含customername、payment type等属性的对象类,还是让EF创建他的sql查询并连接相关表?我很担心这里的性能,这将在云上部署,大量事务等待处理


有什么建议吗?

我的建议是为此创建一个DTO类,并使用SQL命令(手工制作)返回的数据集填充联接和关系


这只是一个建议,因为我对类似的问题使用了这种方法。

我的建议是为此创建一个DTO类,并使用SQL命令(手工制作)返回的数据集填充连接和关系

这只是一个建议,因为我用这种方法解决了一个类似的问题。

您可以利用和在某些方面利用分离读模型和写模型的好处

不必实现整个体系结构,只需将读写模型和服务分离,这使得读模型发送定制的DTO平面以用于数据挖掘和分析,而另一方面,在写模型中发送强大的域模型以用于业务逻辑处理

检查并举例说明

您可以利用和在某些方面利用读模型与写分离的好处

不必实现整个体系结构,只需将读写模型和服务分离,这使得读模型发送定制的DTO平面以用于数据挖掘和分析,而另一方面,在写模型中发送强大的域模型以用于业务逻辑处理


检查并举例我的经验是DDD不适合做报告、统计等。 一些像Jimmy Nilsson这样的专家告诉你用常规数据访问绕过你的域。 如果您只是想一想,在呈现数据时没有太多的领域逻辑。仅仅为了查看数据,使用ORM、存储库、AggregateRoot等进行分层和DDD风格的操作似乎是一种开销

只是个人意见。
/祝你好运,并向马格纳斯致意

我的经验是DDD不适合做报告、统计等工作。 一些像Jimmy Nilsson这样的专家告诉你用常规数据访问绕过你的域。 如果您只是想一想,在呈现数据时没有太多的领域逻辑。仅仅为了查看数据,使用ORM、存储库、AggregateRoot等进行分层和DDD风格的操作似乎是一种开销

只是个人意见。
/祝你好运,并向马格纳斯致意

是的,我也这么想,但我想在整个项目中使用EF是的,我也这么想,但我想在整个项目中使用EF,但这仍然可以,对吗?或者您的DTO正在缓存先前获取的数据?您有两种方法,一种是根据请求获取和连接,另一种是更好地构建缓存,最好但更复杂的方法是使用自定义表(平面)创建另一个数据库用于查询,每当域层更改状态时,发布一个事件,并生成一个处理程序来展平状态更改中的数据,并将其放入查询数据库中,因此OrderAggregate表将位于我的模型类中,对吗?或者这将作为我的DTO?您将有2个模型,一个项目是域模型,将以面向对象的方式设计订单聚合,另一个项目将被称为读取模型,DTO定制为读取,就像订单DTO一样,只需读取所需数据。最后,您可以使用一个具有两个不同映射层的数据库(一个用于将域实体映射到表中,另一个用于将DTO映射到表中)检查示例以了解此方法的更多详细信息另一种方法是使用两个数据库,一个用于读取,一个用于写入,读取表将是平面的,并且可以进行自定义以进行读取和分析,但这仍然可以进行连接,对吗?或者您的DTO正在缓存先前获取的数据?您有两种方法,一种是根据请求获取和连接,另一种是更好地构建缓存,最好但更复杂的方法是使用自定义表(平面)创建另一个数据库用于查询,每当域层更改状态时,发布一个事件,并生成一个处理程序来展平状态更改中的数据,并将其放入查询数据库中,因此OrderAggregate表将位于我的模型类中,对吗?或者这将作为我的DTO?您将有2个模型,一个项目是域模型,将以面向对象的方式设计订单聚合,另一个项目将被称为读取模型,DTO定制为读取,就像订单DTO一样,只需读取所需数据。最后,您可以使用一个具有两个不同映射层的数据库(一个用于将域实体映射到表中,另一个用于将DTO映射到表中)检查示例以了解此方法的更多详细信息另一种方法是使用两个数据库,一个用于读取,一个用于写入,阅读表格应平整,便于阅读和分析