C# 实体框架核心2.1中特定环境的种子数据

C# 实体框架核心2.1中特定环境的种子数据,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我在EF Core 2.1中使用新的种子数据方式,我只想为开发环境种子数据 最初我试过这样做: protected override void OnModelCreating(ModelBuilder modelBuilder) { if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != EnvironmentName.Development) { return; }

我在EF Core 2.1中使用新的种子数据方式,我只想为开发环境种子数据

最初我试过这样做:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != EnvironmentName.Development)
    {
        return;
    }

    modelBuilder.Entity<Customer>().HasData(new Customer { ... });
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
if(Environment.GetEnvironmentVariable(“ASPNETCORE_Environment”)!=EnvironmentName.Development)
{
返回;
}
modelBuilder.Entity().HasData(新客户{…});
}
但是,我注意到生成的迁移总是将客户插入数据库


是否有一种方法可以限制每个环境的数据种子?

我认为您可以在
ConfigureServices
方法中的Startup.cs中这样做

if (env.IsDevelopment())
   // then seed data
下面是在Asp.NETCore中播种数据的推荐方法(请注意,我并没有在这里检查环境)。请看我的样品


文件将用于在运行时进行种子设定

这是种子设定数据还是创建表?@viveknuna这是种子设定数据。应为所有环境创建表。种子数据只应添加到开发环境中。@ChaoticNadirs您找到好的解决方案了吗?
DbContext
应该更改构造函数并注入
IHostingEnvironment