Model 存储库仍然是没有工作单元的存储库吗?

Model 存储库仍然是没有工作单元的存储库吗?,model,domain-driven-design,repository-pattern,Model,Domain Driven Design,Repository Pattern,如果您创建了一个存储库类来封装给定实体(如PersonRepository)的所有持久性逻辑,但您的存储库类没有实现工作单元模式或标识映射模式,那么它仍然被视为存储库吗?换句话说,存储库实现是否需要工作单元和标识映射,或者我们是否可以将封装持久性逻辑的任何类称为存储库 我应该补充一点。如果存储库不需要这些模式,并且它实际上只是持久性方法的容器,那么存储库和DAO(数据访问对象)之间的区别是什么?我们只是为同一个对象创建了多个名称,还是缺少了存储库的一部分?是的,它仍然是一个存储库 至于如果Rep

如果您创建了一个存储库类来封装给定实体(如PersonRepository)的所有持久性逻辑,但您的存储库类没有实现工作单元模式或标识映射模式,那么它仍然被视为存储库吗?换句话说,存储库实现是否需要工作单元和标识映射,或者我们是否可以将封装持久性逻辑的任何类称为存储库


我应该补充一点。如果存储库不需要这些模式,并且它实际上只是持久性方法的容器,那么存储库和DAO(数据访问对象)之间的区别是什么?我们只是为同一个对象创建了多个名称,还是缺少了存储库的一部分?

是的,它仍然是一个存储库


至于如果Repository==DAO,我认为Repository应该位于业务逻辑层,DAO应该位于数据访问层,也就是说,我认为它们位于不同的层。据我所知,存储库调用DAO方法来加载和持久化数据。

我认为存储库和工作单元模式是正交的


通常,我希望单个工作单元跨多个存储库上的操作,因此实现该单元应该属于更高的一层。

基于Sii所说的,如果存储库和工作单元不相关,我觉得更好。关注点分离?

在考虑关注点分离时,请记住,您的存储库将具有数据存储实现方法,允许您将其保留在主代码之外。这有助于单元测试以及最终完全替换数据存储实现(数据存储实现的一个示例是ASP.NET中的LINQ to SQL)