如何在运行时添加DbContext

时间:2019-11-22 09:16:42

标签: c# asp.net-core asp.net-core-webapi

我正在尝试在运行时添加DbContext。我这样做的原因是因为客户端使用不同的数据库架构。这样一来,我无法将其添加到ConfigureServices的{​​{1}}方法中,因为我需要首先了解客户端,然后尝试使用自StartUp方法以来在其中创建具有适当模式的连接字符串。每次发出请求时都会调用。我尝试访问Configure,但是容器显示尚未注册类型IServiceCollection的服务。我现在尝试在启动的IServiceCollection方法中注册IServiceCollection本身,然后应用程序拒绝完全启动。有没有更好的方法在运行时添加它?

ConfigureServices

客户端验证程序负责解析客户端连接字符串。

1 个答案:

答案 0 :(得分:0)

好的,我通过添加QueryTrackingBehaviour.NoTracking的{​​{1}}重载来解决了重新初始化的问题

AddDbContext

最重要的是,我没有在启动文件中这样做,而是通过覆盖services.AddDbContext<DatabaseContext>(options => { options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); options.UseSqlServer(databaseSettings.DefaultConnection); }); 的{​​{1}}方法来初始化连接,但是在上述方法之前,我找到了一个更好的解决方案。解决方案如下

OnConfiguring