私は通信会社の大規模システムに取り組んでいます。私はDDDを初めて使用し、さまざまな部分をリンクするのに苦労しています。現在のシステムはNHibernateを使用して構築されています。現在600をはるかに超えるテーブルがあり、すべてのデータアクセスはNHibernateを使用して行われますが、新しいシステムではEFを使用します。以下は、いくつかの機能領域と、各機能領域のデータベーステーブルの例です。
顧客
----->CustomerDemographics
-----> CustomerPayments
-----> CustomerTransactions
RoutingEngine
-----> InboundRoutes
-----> OutboundRoutes
ProvisioningEngine
----- > InboundSwithces -----
> OutboundSwitches
-----> RouterConfigs
-----> GatewayConfigs
BillingEngine
-----> InboundTraffic
-----> OutboundTraffic
システムはユニットテスト可能でなければならないので、リポジトリパターンを使用して実際のエンティティを抽象化し始めました。1つのアプローチは、データベーステーブルごとに1つのリポジトリオブジェクトを作成することです。もちろん、これらのリポジトリクラスはすべて、汎用リポジトリインターフェイスから派生させることができます。ただし、これにより、コードベースのメンテナンスに関してかなりのオーバーヘッドが追加されます。DDDでは、このアグリゲートの概念について読みましたが、EFのコンテキストで特別に適用する方法がわかりません。Aggregateオブジェクトは、これらのリポジトリーのコンテナーである必要がありますか、それとも関連するコンテキスト(Bounded DbContextsの線に沿った何かを意味する)のコンテナーである必要がありますか?