C# 实体框架核心-从代码端迁移和更新

C# 实体框架核心-从代码端迁移和更新,c#,.net,entity-framework,C#,.net,Entity Framework,我想问一下,当程序运行时(实体框架核心),是否可以从代码端迁移和更新数据库。 问题是我从密钥库下载了一个连接字符串。更重要的是,连接字符串不能硬编码或在环境变量中。 谢谢你的回答 当前错误: 字符串参数“connectionString”不能为空 您可以使用IHostedService在启动时执行数据库迁移 公共类数据库迁移:IHostedService其中T:DbContext { 私有只读服务器ViceProvider服务提供商; 公共数据库迁移(IServiceProvider服务提供商)

我想问一下,当程序运行时(实体框架核心),是否可以从代码端迁移和更新数据库。 问题是我从密钥库下载了一个连接字符串。更重要的是,连接字符串不能硬编码或在环境变量中。 谢谢你的回答

当前错误:

字符串参数“connectionString”不能为空


您可以使用
IHostedService
在启动时执行数据库迁移

公共类数据库迁移:IHostedService其中T:DbContext
{
私有只读服务器ViceProvider服务提供商;
公共数据库迁移(IServiceProvider服务提供商)
{
this.serviceProvider=serviceProvider;
}
公共异步任务StartAsync(CancellationToken CancellationToken)
{
使用(var scope=serviceProvider.CreateScope())
{
var db=await scope.ServiceProvider.GetRequiredService();
等待db.Database.MigrateAsync();
}
}
公共任务StopAsync(CancellationToken CancellationToken)=>Task.CompletedTask;
}
services.AddHostedService();
我刚用过:

  using (var context = new AzureContext())
            {
                try
                {
                    context.Database.Migrate();
                }
                catch (Exception)
                {
                    throw;
                }
            }

您的问题是如何在程序运行时连接到其他数据库?这是可能的,所以我们可能需要看到一些代码,在那里你会得到这个错误。问题是,我需要一个连接字符串到数据库,我只有在程序运行时才能得到它。但当程序运行时,我不能使用EntityFrameworkCore更新和迁移数据库。当你说“我从密钥库下载连接字符串”时,你的意思是?