Добавить тестовые данные при создании миграций - PullRequest
0 голосов
/ 19 октября 2018

У меня есть следующая конфигурация сущности Entity Framework Core 2.1:

public class CategoryConfiguration : IEntityTypeConfiguration<Category> {

  public void Configure(EntityTypeBuilder<Category> builder) {

    builder.With(x => { 
      x.ToTable("Categories");
      x.Property(y => y.Id).UseSqlServerIdentityColumn();  
      x.Property(y => y.Name).IsRequired(true).HasMaxLength(40);

      x.HasData(
        new { Id = 1, Name = "A" },
        new { Id = 2, Name = "B" },
        new { Id = 3, Name = "C" },
        new { Id = 4, Name = "D" }
      );         

    });

  }
}

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

Так что в этом случае я быхотелось бы добавить более 4 категорий ...

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

Итак, япри запуске миграции необходимо установить переменную, которая определяет, вставляются ли текущие или тестовые данные в базу данных.

Возможно ли это?Как это обычно делается?

1 Ответ

0 голосов
/ 21 октября 2018

в вашем методе миграции Up вы можете проверить имя базы данных и решить, что делать, основываясь на желаемой базе данных.Например, вы можете запустить SqlQuery для вставки нужных вам строк.

для получения имени базы данных вы можете использовать следующий код:

public override void Up()
{   
    var builder = new System.Data.SqlClient
         .SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString);
    var dbname = builder.DataSource;
    if (dbname == "dbLive")
    {
        Sql("insert into table1 values('A' , 'B')");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...