【发布时间】:2014-12-27 23:19:31
【问题描述】:
这可能更多的是关于个人喜好,但我一直在尝试使用存储库和工作单元模式来解决问题,但我已经看到了非常不同的用途,并且想知道哪个“更好”以及为什么.
使用1:
在这种使用中,Repository 被放入了 Unit of Work
使用2:
在这种使用中,工作单元被放入存储库中
【问题讨论】:
标签: repository-pattern unit-of-work repository-design
这可能更多的是关于个人喜好,但我一直在尝试使用存储库和工作单元模式来解决问题,但我已经看到了非常不同的用途,并且想知道哪个“更好”以及为什么.
使用1:
在这种使用中,Repository 被放入了 Unit of Work
使用2:
在这种使用中,工作单元被放入存储库中
【问题讨论】:
标签: repository-pattern unit-of-work repository-design
这……很复杂。先从我对what a Repository is的简单解释说起。其次,UoW 概念被过度使用和滥用。考虑到存储库,使用聚合的 DDD 方法意味着存储库封装了 UoW,因为聚合根中的所有内容都必须作为一个整体进行持久化。在数据库级别,UoW 仅表示使用事务,如果多个存储库使用相同的事务,这也适用。
但是,大多数情况下这是错误的设计,因为它通常仅适用于非分布式应用程序并且需要一些符合 ACID 的存储。虽然这可能是您的情况,但您使用存储库模式这一事实意味着您希望您的应用程序对持久性无知,这意味着您的应用程序不应该知道 UoW 是一种可在持久性内部使用的模式(通过 ORM 或直接通过数据库事务)。
所以,我会说“正确”的答案是:存储库可能使用 UoW 实现,具体取决于特定需求。如果您使用的是 ORM,则会自动使用 UoW。
【讨论】: