Когда вы говорите «базовые данные», я предполагаю, что вы имеете в виду посев каждой среды. Для этого миграция обеспечивает seeding mechanism. В Seed() вы можете различать среды, как в обычном коде. Мы хотели бы использовать преобразование Web.config настройки:
protected override void Seed(BookService.Models.BookServiceContext context)
{
if (ConfigurationManager.AppSettings["DeployEnvironment"] == "UAT")
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Test User" },
);
}
else if (ConfigurationManager.AppSettings["DeployEnvironment"] == "PROD")
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Production User" },
);
}
}
Другой вариант директивы компилятора:
protected override void Seed(BookService.Models.BookServiceContext context)
{
#if DEBUG
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Test User" },
);
#else
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Production User" },
);
#endif
}
Насколько применяя себя миграциями, мы следуем в развитии this process. Когда мы готовы к развертыванию в UAT, мы можем просто указать строку соединения в UAT и выполнить миграцию, или мы можем create a script обновить базу данных. В PROD мы делаем this.