我正在考虑实现存储库模式(因为我想出的是 90% 的实现),并且遇到了一个设计问题 - 我有两个或更多核心业务对象(例如,业务和 CRM 应用中的联系人),BO 可以是高度相关的,也可以是完全不相关的。
在这种情况下,我应该实现一个存储库(例如 CrmRepository,带有 .addBusiness()、.addContact() 等)还是多个存储库(BusinessRepository、ContactRepository,每个存储库都有自己的 .add()、.delete( ) 等).
在这种情况下,最佳做法是什么?
底层 DAL 是 EF4。
问候
哞哞
最佳答案
我们最近在工作中进行了很多思考,发现了一些帮助我们以一致的方式可视化和设计存储库的文章。
据我们发现,一种更好的做法是为每个聚合根创建一个存储库。聚合根将是一种实体类型,您需要在其中引用该实体类型以达到子值类型。只能从数据库中查询实体类型,任何子值类型都需要从实体中遍历。
根据您问题中的信息,企业似乎是聚合根,因此是实体类型,并且需要自己的存储库。由于 Contact 可以独立存在,因此它也可能是聚合根。这两个对象可以相互引用并使用存储库从联系人加载业务或通过其各自的存储库从业务加载联系人。
我最近读了很多书,所以我希望我在思考过程中有所了解。
一些链接
关于c# - 存储库模式和多个相关的核心实体或业务对象——一个存储库还是多个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327408/