如何使用动态连接字符串DI EF 6服务

本文关键字:EF 服务 DI 字符串 何使用 动态 连接 | 更新日期: 2023-09-27 18:13:15

我们的数据库设置为一个管理数据库和多个客户端数据库。当用户登录时(通过admin数据库),我们决定他们应该使用哪个客户端数据库,并返回该连接字符串以供将来使用(存储在会话中)。

我真的很喜欢这个答案处理EF6工作的方式,并希望实现这样的东西,但我不确定如何使用DI和更新连接字符串。

DbContext上的连接字符串的实际更新是直接使用DbConnection的。它只是通过一些我目前没有看到的DI机制干净地创建和更新DbContext的能力。

如何使用动态连接字符串DI EF 6服务

DI是编译时的过程,但是您可以在运行时使用工厂模式根据某些条件实例化一个类(从继承同一接口的一组类)

作为您的问题的解决方案,您可以使用静态函数返回适当的连接字符串,不需要DI

public static class ConnectionStringPorvider
{
    public static string getConnectionString()
    {
        switch(dbName)
        {
         ....
        }
    }
}

和数据上下文类

base(global::[class name space].ConnectionStringPorvider.getConnectionString(dbName), mappingSource)