Gue*_*lla 4 c# asp.net-core-mvc asp.net-core
拥有多个存储库是否会增加资源使用率?
我按照本教程添加了一个包含数据库上下文的存储库服务: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);
}
Run Code Online (Sandbox Code Playgroud)
请注意我的弱示例中的每个 repo 是如何根据实体类型定制的。如果你不这样做,你的单一回购会很快
您可能需要考虑将您的存储库拆分为存储库和 工作单元类,因为:
存储库不应具有数据库的语义。它应该像内存中的对象集合,而不是像 update 和 save 这样的方法。-莫什
您可以从以下链接中的教程中了解更多信息。
拥有多个存储库是否会增加资源使用率?
通常不会,因为对于任何给定的操作,您感兴趣的所有存储库都将附加到同一个数据库上下文实例。昂贵的是上下文,而不是回购。
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |