Я использую .Net Core
У меня есть сценарий, в котором мне нужно будет переключить строку подключения на две разные базы данных с идентичной схемой на основе DepartmentId.
У меня есть база данных с именем Department1
, в которой находятся более старые записи, и руководство принимает решение периодически перемещать записи различных отделов в Department2
, обновляя параметр переключения с запятой DepartmentToggle
в нашей базе данных Config
. По сути, наша команда ETL переместит записи в новую базу данных и обновит этот параметр после завершения. Долгосрочный план состоит в том, чтобы переместить эти записи базы данных в облако. Это первый шаг к этому.
Таким образом, если параметр переключения DepartmentToggle
имеет значение "1,2,3"
, это означает, что записи Департаментов 1, 2, 3 находятся в Department2
. Итак, мне сначала нужно прочитать значение конфигурации DepartmentToggle
из базы данных Config
, проверить, включен ли DepartmentId в переключатель. Если да, DepartmentContext должен использовать Department2
connectionString. Ниже мой контекстный класс:
public partial class DepartmentContext : DbContext
{
// Required for DI container
public DepartmentContext() { }
// Required for unit testing
public DepartmentContext(DbContextOptions options) : base(options) {}
public virtual DbSet<Faculty> Faculties { get; set; }
public virtual DbSet<Student> Students { get; set; }
......
//More DbSets
//connectionString to change based on the DepartmentId
public static string ConnectionString { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(ConnectionString);
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//modelBuilder.Entity<Faculty>(entity => { });
}
}
Есть предложения?