这可能更多地是关于个人偏好,而不是任何事情,但我一直在尝试使用Repository和Unit of Work模式,但我已经看到了非常不同的用途,我想知道哪个"更好"以及为什么。
使用1:
在这种使用中,存储库被放入工作单元中
使用2:
在这种使用中,工作单元被放入存储库
这是。。。。复杂的首先从我对知识库的简单解释开始。接下来,UoW概念被过度使用和滥用。考虑到存储库,使用aggregate的DDD方法意味着存储库封装UoW,因为聚合根中的所有内容都必须作为一个整体持久化。在数据库级别,UoW只是指使用事务,即使在多个存储库使用同一事务的情况下,这也适用。
然而,大多数时候这是错误的设计,因为它通常只适用于非分布式应用程序,并且需要一些符合ACID的存储。虽然这可能是你的情况,但你使用Repository模式的事实意味着你希望你的应用程序对持久性一无所知,这意味着你的应用不应该知道UoW,这是一种在持久性内部可用的模式(通过ORM或直接通过db事务)。
因此,我认为"正确"的答案是:存储库可能使用UoW实现,这取决于特定的需求。如果使用ORM,则会自动使用UoW。