у нас регулярно меняются данные базы данных (каждые две недели до одного раза в месяц). Обычно необходимо использовать самые последние данные, но в некоторых особых случаях необходимы более старые данные.
Текущая информация о том, какую версию нужно использовать atm, хранится в другой таблице.
База данных выглядит например, версионные имена схем с теми же таблицами под ним.
YYYYMMDD+Revision
myshema_202001011
table1
myshema_202002011 and so on
table1
myshema_202003011 and so on
table1
Я создал службу As pnet core (2.2) с двумя классами DbContext, один для схем stati c, которые получает текущую версию для использования и одну для изменяющихся схем, которая обращается к этим данным.
stati c DbContext работает просто отлично.
Проблема в том, что даже когда я использую изменяющийся контакт с использованием like,
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 выполняется каждый раз ? Или, может быть, другое решение, как справиться с этими меняющимися схемами?