我正在为一家电信公司的大型系统工作。我是DDD的新手,很难将不同的部分连接在一起。我们目前的系统是使用NHibernate构建的。它目前有超过600个表格,所有的数据访问都是使用NHibernate完成的,但是对于新系统我们将使用EF。以下是几个功能区域和每个功能区域中数据库表格的示例。如何聚合存储库?
顾客
-----> CustomerDemographics
-----> CustomerPayments
-----> CustomerTransactions
RoutingEngine
-----> InboundRoutes
- ---> OutboundRoutes
ProvisioningEngine
-----> InboundSwithces
-----> OUTB oundSwitches
-----> RouterConfigs
-----> GatewayConfigs
BillingEngine
-----> InboundTraffic
-----> OutboundTraffic
由于该系统具有为单元测试,我开始用存储库模式抽象实际实体。一种方法是为每个数据库表创建一个存储库对象。当然,所有这些存储库类都可以从通用存储库接口派生。但是,这会在代码库维护方面增加相当多的开销。在DDD中,我读到了关于Aggregates的这个概念,但我不确定应该如何将它专门应用于EF的上下文中。聚合对象应该是这些存储库的容器,还是更多的是相关上下文的容器(意味着沿着Bounded DbContexts的行)?
谢谢。关于“你应该围绕总量构建你的仓库”,你可以在你的答案中添加任何它的例子。我只是想听听我应该如何组织这些聚合体。 – imak
单个存储库应该负责域模型中的单个聚合。所以如果客户是一个聚合,你会有一个CustomerRepository等等。关于如何识别和设计总量的问题,请看看有效总量设计的链接。 – eulerfx