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

时间:2020-05-13 07:54:37

标签: c# .net entity-framework

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

当前错误:

字符串参数'connectionString'不能为空。

2 个答案:

答案 0 :(得分:0)

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

    public class DatabaseMigration<T> : IHostedService where T:DbContext
    {
        private readonly IServiceProvider serviceProvider;

        public DatabaseMigration(IServiceProvider serviceProvider)
        {
            this.serviceProvider = serviceProvider;
        }

        public async Task StartAsync(CancellationToken cancellationToken)
        {
            using (var scope = serviceProvider.CreateScope())
            {
                var db = await scope.ServiceProvider.GetRequiredService<T>();
                await db.Database.MigrateAsync();
            }
        }

        public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
    }

    services.AddHostedService<DatabaseMigration<Context>>();

答案 1 :(得分:-1)

我刚用过:

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