首页 > 解决方案 > 如何传递 CreateDbContext Args 参数?

问题描述

我有多个 DBContext 和 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);
    }
}

如前所述我是这样申请的。

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

但我没有看到所有 args 参数。

标签: entity-framework-core

解决方案


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

将参数流入 IDesignTimeDbContextFactory

参数现在从命令行流入CreateDbContext. IDesignTimeDbContextFactory例如,为了表明这是一个dev构建,dev可以在命令行上传递一个自定义参数(例如 ):

dotnet ef migrations add two --verbose --dev

推荐阅读