1

这可能更多是关于个人喜好,但我一直在尝试使用存储库和工作单元模式来解决问题,但我已经看到了非常不同的用途,并且想知道哪个“更好”以及为什么。

使用1:
在本次使用中,Repository被放入到Unit of Work中

用途2:
在本次使用中,将工作单元放入Repository

4

1 回答 1

1

情况很复杂。首先从我对什么是 Repository 的简单解释开始。其次,UoW 概念被过度使用和滥用。考虑到存储库,使用聚合的 DDD 方法意味着存储库封装了 UoW,因为聚合根中的所有内容都必须作为一个整体进行持久化。在数据库级别,UoW 仅表示使用事务,如果多个存储库使用相同的事务,这甚至适用于它们。

然而,大多数时候这是错误的设计,因为它通常只适用于非分布式应用程序并且需要一些符合 ACID 的存储。虽然这可能是您的情况,但您使用存储库模式这一事实意味着您希望您的应用程序对持久性无知,这意味着您的应用程序不应该知道 UoW 是一种可在持久性内部使用的模式(通过 ORM 或直接通过数据库事务)。

因此,我会说“正确”的答案是:存储库可能会使用 UoW 实现,具体取决于特定需求。如果您使用的是 ORM,则会自动使用 UoW。

于 2014-11-01T20:01:28.060 回答