如何传递CreateDbContext Args参数?

时间:2020-07-18 21:26:38

标签: entity-framework-core

我有多个DBContexts和DesignTimeDbContextFactory实现,如下所示。

public class MasterDbContextFactory : IDesignTimeDbContextFactory<MasterDbContext>
{
    public MasterDbContext CreateDbContext(string[] args)
    {
        StringBuilder sb = new StringBuilder();
        foreach (var arg in args)
            sb.AppendLine(arg);
        System.IO.File.WriteAllText("D:\\debug.txt", sb.ToString());
 
        string server = args[1];
        string databaseName = args[2];
 
        string connectionString = string.Format(Constant.Connection, server, databaseName);
        var optionsBuilder = new DbContextOptionsBuilder<MasterDbContext>();
        optionsBuilder.UseSqlServer("connection string");
        return new MasterDbContext(optionsBuilder.Options);
    }
}

here所述,我这样申请。

Update-Database -Context MasterDbContext -AppArgs 'LAPTOP-E4UBP70J' 'MASTER_USER'

但是我看不到所有的args参数。

2 个答案:

答案 0 :(得分:1)

该功能仅在最新版本的EF Core 5.0 Preview 6中可用

Flow arguments into IDesignTimeDbContextFactory

参数现在从命令行流入CreateDbContext的{​​{1}}方法中。例如,要表明这是IDesignTimeDbContextFactory构建,可以在命令行上传递自定义参数(例如dev

dev

答案 1 :(得分:0)

此版本在5.0.0-preview.7.20365.15版本下效果很好。

使用其他参数添加迁移:

Add-Migration InitialCreate -Context MasterDbContext -OutputDir Migrations\Master -Args 'P1 P2'

使用其他参数更新迁移:

Update-Database -Context MasterDbContext -Args 'P1 P2'

这里是source