我已经看到 ORM 使用一个工作单元在一个步骤中提交多个存储库。
我还看到了 DDD 和通过存储库保存的聚合根的使用,当使用事件存储时,持久性在概念上变得非常容易理解。
我总是需要编写数据访问代码,虽然我熟悉 ORM,但我是域驱动设计和事件溯源的新手——事件溯源很棒,但确实有很多基础设施。
最终,我想要一些规则来帮助决定 DDD+ES 在什么时候(代码大小、数据库实体的数量)变得值得在 CRUD 系统上付出额外的努力。
为了帮助决定我的问题如下:
我还没有看到聚合根合并到一个工作单元中,这可以避免吗?如果是这样,这会导致什么问题?
在 DDD 中,客户实体可能具有嵌入其中的地址和电话(值对象),而在 ORM 中,有一个包含客户、电话和地址存储库的工作单元。解释和理解这些不同方法的最佳方式是什么?
ORM 可以使用多个不同的工作单元(每个都引用相关和相关的存储库/表)来表示聚合根吗?
从我的域到 ORM 的阻抗不匹配需要注意哪些痛苦/警告信号,此时我们可以考虑切换到事件存储?