如何将参数传递给dotnet ef数据库更新?
我希望能够使用参数来更新不同的数据库。
我试过了
dotnet ef数据库更新“接受”
dotnet ef数据库更新接受
但这没用..
还是我该如何放置一个开关以从配置中获取不同的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);
}
在得到答案的几周后,.NET 5发布了。因此,这有可能改变。
现在回答
.NET 5和关联的EF Core 5+ NuGets支持此功能。在包管理器中,您可以输入:
Add-Migration YourMigrationName -Args "Space Separated Args"
Update-Database -Args "Space Separated Args"
例如,我使用此:
Update-Database -Args MyConnName
在我的启动项目中,我有一个具有该连接字符串键的配置文件(或appsettings.json),然后将其拉入。
请注意,我说过.NET Core5。从现在开始,它将在几周内发布完整版本。因此,在几周内这个答案可能很简单。但在此之前,您可能需要安装预览版(和NuGet PreReleases)
在此之前
有缺乏选择,当这个问题被问,虽然有选项,比如使用dotnet ef commands
带AppArgs
,如这里讨论。但是这些已更改,并且现在也可以从PM控制台访问,如上面“现在”的答案中所述。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句