我们怎样才能将参数传递给dotnet ef数据库更新?
我希望能够使用参数更新不同的数据库.
我试过了
dotnet ef数据库更新“接受”
dotnet ef databse update接受
但它没有用..
或者我如何设置一个开关来从我的配置中获取不同的conenctionString?
public ProjectContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
// Find a way to get different connection string
var connectionString = configuration.GetConnectionString(args[0]);
var builder = new DbContextOptionsBuilder<ProjectContext >();
builder.UseSqlServer(connectionString);
return new ProjectContext(builder.Options);
}
最佳答案 我最近有一个类似的问题试图让Asp.Net Core应用程序读取连接字符串.事实证明,您不需要IDesignTimeDbContextFactory.相反,只需确保你的上下文有一个无命名的构造函数,并在启动时使用这样的东西:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
这应该解析为您配置的任何连接字符串.如果你确实想要同时使用两个独立的连接(我意识到你不想要),你可以通过在这一点注册多个DbContexts来做到这一点;例如:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("OtherConnection")));