我正在尝试创建一个使用MVC3,EF和DDD方法的报告/分析Web应用程序。我很难为现有数据库上的聚合表提供实体或对象类。例如,我将Orders和OrderLine作为聚合,将Customers作为实体。这三个对象可以使用DDD方法建模,但是如果我想要一个OrdersAggregate表,它将包含所有细节,如客户名称,付款类型等。
我应该在这里创建一个包含customername,payment type等属性的对象类,还是让EF创建他的sql查询并加入相关的表?我担心这里的性能,这将会在云端发生,并且需要进行大量的交易。
有什么建议吗?
答案 0 :(得分:2)
您可以在某些方面使用CQRS和here,以便将读取模型与写入分开。
不必实现整个体系结构,只需将读取与写入模型和服务分开,这使得读取模型将定制的DTO发送为用于rading和分析的目的,另一方面在写入模型中发送强大的域模型业务逻辑处理。
答案 1 :(得分:1)
我的经验是DDD不适合做报告,统计等。 像Jimmy Nilsson这样的一些专家告诉您通过常规数据访问绕过您的域名。 如果您只是考虑一下,那么在呈现数据时没有太多的域逻辑。对于视图数据而言,使用ORM,存储库,聚合器等进行图层和DDD样式似乎只是一种开销。
只是个人意见。 /祝你好运和最好的问候马格努斯
答案 2 :(得分:0)
我的建议是为此目的创建一个DTO类,并使用从命令(手工制作)返回的数据集填充您的连接和关系。
只是一个建议,因为我使用这种方法来解决类似的问题。