我正在处理一个设计问题,我确信它有一个简单的答案和/或以前已经解决过。很长一段时间以来,我一直在阅读、思考和寻找解决方案,但似乎没有什么是真正有意义的。
问题的要点是我正在处理一系列遗留系统和数据库,并且我正在尝试采用 DDD 方法来构建新应用程序并替换旧应用程序。核心问题是,虽然我的域实体、值对象和聚合具有商业意义,但当我考虑持久性时,我遇到了一个大问题……聚合中的实体当前持久化在多个数据库中。
例如,假设我有实体 A、B 和 C,其中 A 是聚合根。我有一个 A 的存储库,我正在围绕 NHibernate 会话使用工作单元来实现持久性。只要 A、B 和 C 都保存到单个服务器/数据库,一切都很好。但是,在我的情况下,A 和 B 可能在一个服务器/数据库上,而 C 可能保存在完全不同的服务器/数据库上。
我意识到传统智慧可能会建议一个人永远不应该这样做,但我正在处理一个遗产。当然,我可能会及时将数据层重构为更合乎逻辑的东西,但现在我被困住了。我怀疑我在某种程度上总是会遇到这个问题,我不禁想到其他人已经越过了这座桥。
简而言之,我有一个 C# 中的本土框架,包括用于持久性的 Fluent/NHibernate、用于 IoC 的 Unity,并采用标准(或至少可识别的)存储库和工作单元模式。至于数据库,我正在处理 MS SQL Server 和 Oracle。
有什么想法吗?