我应该有多个存储库吗?

游击队

拥有多个存储库是否会增加资源使用率?

我已经按照本教程添加了用于保存数据库上下文的存储库服务:https : //docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api

在教程中,存储库用于管理待办事项。在我自己的应用程序中,我有几种需要上下文的不同类型的项目和活动。我应该为每个数据库创建一个单独的存储库吗?例如,一个用于查询的存储库,另一个用于用户使用量度的存储库?这样做有任何开销或罚款吗?

米奇

我应该为每个数据库创建一个单独的存储库吗?例如,一个用于查询的存储库,另一个用于用户使用量度的存储库?这样做有任何开销或罚款吗?

是。没有。

通常,您希望每个实体类型都拥有一个存储库,因为除了陈词滥调的CRUD操作之外,每种实体类型都将需要更多针对其类型的操作回购的目的是消除重复的数据查询逻辑,否则这些逻辑将散布在您的应用程序中。

例如

interface IRepo { CRUD }

protected abstract class RepoBase<T> : IRepo 
{
   // CRUD implementation
}

public class PatientRepo : RepoBase<Patient>
{ 
    List<IPatient> GetAllTerminallyIllPatients();
}

public class MusicRepo : RepoBase<Music>
{
    List<ISong> GetAllSongsByArtist (string artist);
}

请注意,我微弱的示例中的每个回购是如何针对实体类型定制的。如果您不这样做,您的单个存储库将很快

  • 变得很难找到想要的方法
  • 无法管理数百种方法
  • 由于所有代码都在一个文件中,因此导致源代码管理冲突的可能性增加

您可能需要考虑将存储库分为存储库 工作单元类,因为:

存储库不应具有数据库的语义。它应该像是内存中对象的集合,而不应该像update和save这样的方法。-莫什

您可以从以下链接的教程中了解更多信息。

拥有多个存储库是否会增加资源使用率?

通常不会,因为对于任何给定的操作,所有感兴趣的回购都将附加同一数据库上下文实例上下文是昂贵的,而不是仓库。

告诉我更多

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

存储库实现是我网域的一部分吗?存储库应该有SQL查询吗?

我可以/应该有多个Objective-C桥接头吗?

我应该有多余的单元测试吗

应该有指针吗?

关于具有登录选项的网站,我应该有一个/多个导航栏吗?

我应该有多个GraphQL实例还是只有一个?

我们的Ubuntu服务器中应该有很多外壳吗?

我应该有两个相同的表吗

我的/ usr / local / bin应该有700个权限吗?

我整个网站应该有一个大的角度文件吗?

我应该有更多的角度服务或控制器吗?

超类应该有构造函数吗?

HMI设备上应该有RTOS吗?

子组件应该有状态吗?- 反应

多个情节提要:它们应该有多小?

我的游戏中应该有几个View Controller?

除了 Etag 之外,我还应该有另一个系统来处理并发吗?

我应该有两个不同的模型类来读取和更新Web API中的对象吗?

我应该有一个 ViewModel 类为每个 Model 类实现 INotifyPropertyChanged 吗?

我应该有注册/登录流程来在tvOS App中实施应用内购买吗?

函数应该有原型错误

导出的const应该有评论

函数应该有多小?

浮动div应该有高度

原生js defaultValue和jQuery prop(defaultValue)之间有(应该有)区别吗?

为什么我的筛子没有看到它应该有的性能提升?

方法声明中不应该有一个冒号(':')吗?

每个片段都应该有自己的活动吗?

仓库设计模式-每个Dao应该有一个仓库吗?