【发布时间】:2022-04-05 14:19:15
【问题描述】:
我对 .NET Core 很陌生(之前一直使用经典框架),不知道如何解决。
我需要创建一个从不同数据库返回公共对象的 API。在此示例中,我使用名为“Usuarios”的表连接到 DB1,并使用名为“Users”的表连接到 DB2。两个表都有不同的字段名称。
在此示例中,我使用了 2 个数据库,但我的想法是在未来添加更多。所以请考虑一个包含 N 个数据库的解决方案。
我有 2 个模型,分别在文件夹中。每个模型都有自己的上下文和一个用户对象。
由于每个数据库都有不同的用户表属性(不同的字段名称等),我创建了一个通用对象:
这个想法是,当你使用 Api 获取所有用户时,你会得到 IEnumerable
然后我为每个数据库都有一个存储库:
接口定义了一个GetAll方法:
然后,每个存储库都实现接口:
对于上下文 1:
对于上下文 2:
现在,让我们看看控制器:
查看控制器:
我不想在构造函数中设置每个存储库,因为将来我添加第三个数据库时,我需要更改所有控制器的构造函数。
我想在每种方法上获取一个参数来选择要连接的数据库。在示例中,Get 方法具有选择要使用的存储库的 db 参数。但是,当然,我不想在每个方法上做一个切换来选择要使用的存储库。
最好的解决方法是什么?
我还展示了我的 Program.cs:
感谢您的帮助
【问题讨论】:
-
我会为每个数据库公开 N 个不同的端点。
标签: c# asp.net-core .net-core asp.net-core-webapi factory-pattern