1

我正在处理一个设计问题,我确信它有一个简单的答案和/或以前已经解决过。很长一段时间以来,我一直在阅读、思考和寻找解决方案,但似乎没有什么是真正有意义的。

问题的要点是我正在处理一系列遗留系统和数据库,并且我正在尝试采用 DDD 方法来构建新应用程序并替换旧应用程序。核心问题是,虽然我的域实体、值对象和聚合具有商业意义,但当我考虑持久性时,我遇到了一个大问题……聚合中的实体当前持久化在多个数据库中。

例如,假设我有实体 A、B 和 C,其中 A 是聚合根。我有一个 A 的存储库,我正在围绕 NHibernate 会话使用工作单元来实现持久性。只要 A、B 和 C 都保存到单个服务器/数据库,一切都很好。但是,在我的情况下,A 和 B 可能在一个服务器/数据库上,而 C 可能保存在完全不同的服务器/数据库上。

我意识到传统智慧可能会建议一个人永远不应该这样做,但我正在处理一个遗产。当然,我可能会及时将数据层重构为更合乎逻辑的东西,但现在我被困住了。我怀疑我在某种程度上总是会遇到这个问题,我不禁想到其他人已经越过了这座桥。

简而言之,我有一个 C# 中的本土框架,包括用于持久性的 Fluent/NHibernate、用于 IoC 的 Unity,并采用标准(或至少可识别的)存储库和工作单元模式。至于数据库,我正在处理 MS SQL Server 和 Oracle。

有什么想法吗?

4

1 回答 1

0

聚合根不应存在于多个数据库中。

Greg Young在这里谈到了同样的问题。


这样的事情是你应该做的。

于 2010-08-25T09:01:03.967 回答