2016-12-01 7 views
1

Когда вы запускаете Update-Database в консоли диспетчера пакетов, он запускает процесс семян. Возможно ли запустить другую команду для запуска какой-либо другой команды посева?Возможно ли запустить собственный метод посева из консоли диспетчера пакетов?

Что-то вроде:

Seed-Test-Data 

Каких бы семян некоторых тестовых данных в локальную базу данных разработчиков.

Я не хочу запускать эту команду в обычном методе семени, потому что это будет выполняться в производственной базе данных при выполнении миграции.

ответ

0

Просто используйте регулярное семя, но проверьте, какой сервер использует контекст и действуйте соответствующим образом. Либо белый список базы данных Dev или черный список прод серверов:

internal sealed class Configuration : DbMigrationsConfiguration<ApplicationDbContext> 
{ 
    protected override void Seed(ApplicationDbContext context) 
    { 
     if (context.Database.Connection.DataSource != "ProductionServer") 
     { 
      if (!context.MyTable.Any()) // If table is empty, seed it... 
      { 
       context.MyTable.AddOrUpdate(
        p => p.ID, 
         new MyTable{ ID = 1, FullName = "Mary Peters" }, 
         new MyTable{ ID = 2, FullName = "Mike Lambson" }, 
         new MyTable{ ID = 3, FullName = "Steve Miller" } 
       ); 
      } 


     } 
     ... 
    } 
} 

Можно также добавить параметр, чтобы проверить обстановку в вашем web.config:

if (ConfigurationManager.AppSettings["Environment"] == "DEV") 
{ 
    ... 
}