在 Entity Framework Core 2.1 中为特定环境播种数据

Cha*_*irs 9 c# entity-framework-core asp.net-core

我正在 EF Core 2.1 中使用新的播种数据方式,并且我只想为开发环境播种数据。

最初我尝试过这个:

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

    modelBuilder.Entity<Customer>().HasData(new Customer { ... });
}
Run Code Online (Sandbox Code Playgroud)

但是,我注意到生成的迁移始终会将客户插入数据库中。

有没有办法根据环境限制数据种子?

小智 -1

我认为你可以在 Startup.cs 中使用ConfigureServices这样的方法

if (env.IsDevelopment())
   // then seed data
Run Code Online (Sandbox Code Playgroud)

这是在 Asp.Net Core 中播种数据的推荐方法(请注意,我在这里没有检查环境)。请在这里查看我的样本

这个文件将用于在运行时种子