创建迁移时添加测试数据

时间:2018-10-19 15:17:50

标签: entity-framework entity-framework-core

我具有以下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 :(得分:1)

在您的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')");
    }
}