拥有多个存储库是否会增加资源使用率?
我已经按照本教程添加了用于保存数据库上下文的存储库服务: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] 删除。
我来说两句