Vin*_*nce 9 entity-framework-core .net-core
我们如何将参数传递给 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);
}
Run Code Online (Sandbox Code Playgroud)
.NET 5 将在此回答发布后的几周内发布。所以这是可以改变的。
现在回答
.NET 5 和相关的 EF Core 5+ NuGets 支持这一点。在包管理器中,您可以键入:
Add-Migration YourMigrationName -Args "Space Separated Args"
Update-Database -Args "Space Separated Args"
Run Code Online (Sandbox Code Playgroud)
例如,我使用这个:
Update-Database -Args MyConnName
Run Code Online (Sandbox Code Playgroud)
在我的 Startup 项目中,我有一个包含该连接字符串键的配置文件(或 appsettings.json),我将其拉入。
请注意,我说的是 .NET Core 5。这将在几周后发布完整版本。所以几周后,这个答案可能很简单。但在那之前,您可能需要安装预览版(和 NuGet PreReleases)
回答 之前
当问到这个问题时,缺少选项,尽管有选项,比如使用dotnet ef commandswith AppArgs,如这里所讨论的。但是这些已经改变,现在也可以从 PM 控制台访问,如上面的“现在”答案中所述。
| 归档时间: |
|
| 查看次数: |
2947 次 |
| 最近记录: |