у нас регулярно меняются данные базы данных (каждые две недели до одного раза в месяц). Обычно приходится использовать самые последние данные, но в некоторых особых случаях необходимы более старые данные.
Текущая информация о том, какая версия должна использоваться, хранится в другой таблице.
База данных выглядит так: версионные имена схем с теми же таблицами под ней.
YYYYMMDD+Revision
myshema_202001011
table1
myshema_202002011 and so on
table1
myshema_202003011 and so on
table1
Я создал службу ядра Aspnet (2.2) с двумя классами DbContext, один для статических схем, который использует текущую версию, и один для меняющихся схем, которые обращаются к этим данным.
Статический DbContext работает нормально.
Проблема в том, что даже когда я использую изменяющийся контакт с использованием лайка,
using (var _context = new ChangingDbContext()){}
конструкторы и OnConfiguring
выполняются каждый раз, но метод OnModelCreating
выполняется только один раз. Это приводит к НЕ обновлению текущих схем.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.HasAnnotation("ProductVersion", "2.2.6-servicing-10079");
modelBuilder.Entity<my_table>(entity =>
{
entity.HasKey(e => e.key_adr);
entity.ToTable("mytable", $"myshema{mySchemaVersion}");
});
}
Кто-нибудь знает, как получить «действительно» новый контекст, в котором OnModelCreating выполняется каждый раз? Или, может быть, другое решение, как справиться с этими меняющимися схемами?