我具有以下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个类别。
因此,在运行迁移时,我需要设置一个变量,以确定是否将实时数据或测试数据插入数据库中。
这可能吗?通常如何做?
答案 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')");
}
}