【发布时间】:2020-06-26 20:24:25
【问题描述】:
我正在创建一个包含资源及其子资源的 Web API。因为 API 将托管在具有不同数据库模式(我无法更改)的多个服务器上,所以我需要创建 DBContext 的不同实现并在 Startup.cs 中创建一些逻辑来处理基于 @987654323 中的属性的上下文绑定@。有些服务器将资源数据存储在不同的数据库中,这意味着我必须为这些服务器的实现使用多个DBContext。
问题出现了,我应该如何构建存储库和上下文,以最大限度地减少代码重复,同时保持代码膨胀?
我应该为资源及其包含多个上下文的子资源创建一个存储库吗?如果是这样,我如何确保我的应用实例化这些多个上下文并将这些上下文绑定到一个存储库?
我应该为每个资源创建一个单独的存储库,每个资源都包含其对应的上下文吗?
我在这里使用了错误的模式还是误用了模式?
【问题讨论】:
-
我讨厌标记这一点,我希望其他人不同意,但这感觉非常基于意见。除此之外,您可能需要考虑编码和配置之外的限制——您需要处理多少负载;有多少记录;您可以/应该将多少工作放到数据库中?
-
@RichardBarker 也许我应该简化我的问题?我可能会通过提供太多我所面临的问题的背景来混淆这个问题。我感兴趣的是,一个存储库拥有多个上下文是否是不好的做法——或者尽管它们所代表的资源是相互连接的,但拥有多个存储库是否更好。
-
正如 Alexander 所说,您的结构中必须有明确定义的抽象。如果您可以将您的结构减少到几个基本接口和抽象类,您将使您需要采取的路径更加清晰。您还需要使用依赖注入在正确的存储库中获取正确的上下文。
标签: c# asp.net-core .net-core asp.net-core-webapi