运行EF 7迁移时指定HostingEnvironment

时间:2015-09-23 15:33:41

标签: c# entity-framework powershell entity-framework-core

我根据应用程序环境为DbContexts设置了连接字符串。所以在我的Startup.cs中我有

public Startup(IHostingEnvironment env, IApplicationEnvironment app)
{
    Configuration = new ConfigurationBuilder(app.ApplicationBasePath)
        .AddJsonFile("config.json")
        .AddJsonFile($"config.{env.EnvironmentName}.json", false)
        .AddEnvironmentVariables()
        .Build();
}

此配置会按如下方式注入我的DbContexts

public MyDbContext(IConfiguration configuration)
{
    Configuration = configuration;
}

protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
    var connString = Configuration.Get("SqlDb:ConnectionString");
    builder.UseSqlServer(connString);
}

因此我可以在各种环境中使用我的项目(通过在应用程序或主机设置中设置ASPNET_ENV)

然而,当我运行ef迁移时(出于显而易见的原因)我根本无法指定HostingEnvironment,启动类会查找名为" config..json"的文件。因为缺少环境名称。有没有办法绕过这个或我可以做的解决方法?目前,每当我运行迁移时,我都必须在运行迁移时对连接字符串进行硬编码

为了兴趣,我使用dnx从powershell运行迁移。 ef命令

总而言之,可以通过命令指定我的主机环境,或者在运行这些命令时执行任何其他类型的解决方法来指定我的环境?

2 个答案:

答案 0 :(得分:1)

迁移发现迁移服务的方式将在即将推出的EF版本中发生变化。

这是一个WIP。请参阅EF7的Wiki - Design Meeting Notes (September 17, 2015)Issue 2294

答案 1 :(得分:0)

--environment选项已添加7f48d0c