拥有多个存储库是否会增加资源使用率?
我已经按照本教程添加了一个包含数据库上下文的存储库服务:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api
在教程中,存储库用于管理 Todo 项。在我自己的应用程序中,我有几种不同类型的项目和事件,我需要为其提供上下文。我应该为每个人创建一个单独的存储库吗?例如,一个用于查询的存储库,另一个用于用户使用指标的存储库?这样做有任何开销或惩罚吗?
最佳答案
是的。不。
通常,您希望 每个实体类型 有一个存储库,因为除了陈词滥调的 CRUD 操作 之外,每种实体类型都可能需要特定于其类型的 操作。 repo 的目的是 消除重复的数据查询逻辑 否则会在您的应用程序中散落一地。
例如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);
}
请注意我的弱示例中的每个 repo 是如何根据实体类型定制的。如果你不这样做,你的单一 repo 会很快
您可能需要考虑将您的 repos 拆分为 repos 和 工作类单元,因为:
您可以从以下链接中的教程中了解更多信息。
通常不会,因为对于任何给定的操作, 所有您感兴趣的 repos 都会 将 附加到 相同的数据库上下文实例 。昂贵的是上下文,而不是 repo 。
告诉我更多
关于c# - 我应该有多个存储库吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43087020/