Asp.Net Core中的运行时更改连接字符串

时间:2019-07-01 12:42:46

标签: c# entity-framework asp.net-core

我正在研究ASP .NET Core应用程序。我必须在运行时更改数据库连接。 在这里,我正在使用appsettings.json文件。

请,我已经尝试了很多,但是似乎没有任何工作,所以我需要您的帮助。

例如:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {

            var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json");
            var configuration = builder.Build();

            optionsBuilder.UseMySql(configuration
                ["ConnectionStrings:Defaultconnection"]);

        }

谢谢。

1 个答案:

答案 0 :(得分:1)

我可以想到几种方法。

1)创建一个DbContextFactory,它将为您创建实例。也许将属性应用于每个上下文,这将允许您在工厂制造实例时从连接字符串集合中获取相关的数据库连接字符串?在DbContextFactory中进行一些反射将足够容易。

2)如果DbContext的集合不太可能更改,并且/或者连接字符串也不太可能-您可以使用ServiceCollection中的AddDbContext <>()扩展方法手动注册每个DbContext,然后仅注入您自己的DbContext想参加想要的课程