我有一个使用Entity Framework Core的Asp.Net Core应用程序,我按以下方式进行初始化:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(sqlConnectionString));
这个方案虽然可以正常运作,但我有一个场景需要在正常操作时从主数据库读写,但有些操作需要从备用服务器读取(一个只读的复制目标,我们用于报告)。
由于新的Core API通过Dependency Injection和StartUp.cs中的配置完成所有操作,因此我该如何切换连接字符串,但仍使用同一个ApplicationDbContext类呢?
我知道一种选项是创建另一个ApplicationDbContext类的副本,并使用不同的连接字符串将其注册到DI系统中,但我想避免维护两个完全相同的DBContext对象,因为有时我需要从不同的数据库服务器(但具有完全相同的模式)读取。
非常感谢任何提示!
options.UseSqlServer
之前加一个条件是否就足够了呢?例如:if(Environment.GetEnvironmentVariable("FIRSTENVIRONMENT") options.UseSqlServer("firstEnvironementConnectionString") else options.UseSqlServer("secondEnvironementConnectionString")
- Adrianif(Environment.GetEnvironmentVariable("FIRSTENVIRONMENT") == "environmentString") options.UseSqlServer("firstEnvironementConnectionString") else options.UseSqlServer("secondEnvironementConnectionString")
- Adrian