c# - 存储库模式和多个相关的核心实体或业务对象——一个存储库还是多个?

标签 c# design-patterns repository-pattern

我正在考虑实现存储库模式(因为我想出的是 90% 的实现),并且遇到了一个设计问题 - 我有两个或更多核心业务对象(例如,业务和 CRM 应用中的联系人),BO 可以是高度相关的,也可以是完全不相关的。

在这种情况下,我应该实现一个存储库(例如 CrmRepository,带有 .addBusiness()、.addContact() 等)还是多个存储库(BusinessRepository、ContactRepository,每个存储库都有自己的 .add()、.delete( ) 等).

在这种情况下,最佳做法是什么?

底层 DAL 是 EF4。

问候

哞哞

最佳答案

我们最近在工作中进行了很多思考,发现了一些帮助我们以一致的方式可视化和设计存储库的文章。

据我们发现,一种更好的做法是为每个聚合根创建一个存储库。聚合根将是一种实体类型,您需要在其中引用该实体类型以达到子值类型。只能从数据库中查询实体类型,任何子值类型都需要从实体中遍历。

根据您问题中的信息,企业似乎是聚合根,因此是实体类型,并且需要自己的存储库。由于 Contact 可以独立存在,因此它也可能是聚合根。这两个对象可以相互引用并使用存储库从联系人加载业务或通过其各自的存储库从业务加载联系人。

我最近读了很多书,所以我希望我在思考过程中有所了解。

一些链接

Aggregate Root

Entities, Value Objects, Aggregates and Roots

关于c# - 存储库模式和多个相关的核心实体或业务对象——一个存储库还是多个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327408/

相关文章:

c# - 是否可以录制游戏中的声音,将其保存,然后使用C#将其作为常规歌曲在手机上播放?

c# - 用单字节字符编码怎么写?

java - 为什么要使用装饰器模式?

javascript - 仅针对一项功能的策略模式

asp.net - 存储库模式最佳实践

C# ActiveDirectory - 检查对象类

c# - EF 4.1 代码优先 : Each property name in a type must be unique error on Lookup Table association

typescript - MVVM 模式 - 公共(public)方法和属性仅适用于 View

c# - .Net Core - 将 API 中间件中的依赖项 IUserInfo 注入(inject)到存储库层

architecture - 体系结构分层和工作单元模式