我的应用程序连接到三个相同的数据库服务器(DDL 明智)。
我想让应用程序用户决定他们想要连接到哪个数据库。
这是一个 ASP.NET Core 2.1 API 项目,它实现了服务和存储库模式(使用 Dapper 调用数据库查询,但这可以更改)。
我可以简单地将服务器名称作为我的域项目中的参数,但我不希望它知道我们拥有的数据库服务器的任何信息,我也不希望我的存储库知道可能有多个服务器。
所以它只是应用程序端可以决定在运行时连接到哪个数据库服务器。
我能够找到 EF Core 的示例和建议,但对于其他任何东西,尤其是 Dapper,我都找不到。
所以我的问题是。我如何让用户在运行时更改数据库服务器,同时让域和存储库不知道存在多个服务器?
因此,在这种情况下,我建议您将连接字符串存储在环境变量或 appsettings.json 文件中。假设用户想要访问 "server1" ,这将来自您的 api,然后您可以像这样在存储库层中获取相关的连接字符串
var connectionString = Environment.GetEnvironmentVariable(serverToUse);
serverToUse
从 api 传入的“server1”在哪里。我更喜欢将我的连接字符串存储在环境变量中,因为它直接存储在主机上,而不是应用程序中。您也可以通过 appsettings 执行此操作
"Server1" : "Your connection string here"
在您的 appsettings.json 中
您也可以在服务层中执行此操作,并让服务层将连接字符串传递到存储库。选择你的口味。在这种情况下,存储库不关心您使用的是什么连接,只要它存在于环境变量或 appsettings 中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句