如何使用动态连接字符串DI EF 6服务
本文关键字:EF 服务 DI 字符串 何使用 动态 连接 | 更新日期: 2023-09-27 18:13:15
我们的数据库设置为一个管理数据库和多个客户端数据库。当用户登录时(通过admin数据库),我们决定他们应该使用哪个客户端数据库,并返回该连接字符串以供将来使用(存储在会话中)。
我真的很喜欢这个答案处理EF6工作的方式,并希望实现这样的东西,但我不确定如何使用DI和更新连接字符串。
DbContext上的连接字符串的实际更新是直接使用DbConnection的。它只是通过一些我目前没有看到的DI机制干净地创建和更新DbContext的能力。
DI是编译时的过程,但是您可以在运行时使用工厂模式根据某些条件实例化一个类(从继承同一接口的一组类)
作为您的问题的解决方案,您可以使用静态函数返回适当的连接字符串,不需要DI
public static class ConnectionStringPorvider
{
public static string getConnectionString()
{
switch(dbName)
{
....
}
}
}
和数据上下文类
base(global::[class name space].ConnectionStringPorvider.getConnectionString(dbName), mappingSource)