如何在Azure上使用EF更新/迁移SQLite数据库

3
我正在使用SQLite数据库开发应用程序。在桌面上,我可以轻松运行Add-MigrationUpdate-Database。现在,当网站正在运行时,我需要进一步开发数据库和功能,因此需要在服务器上运行Update-Database,但我不知道该怎么做。
是否有一段代码可以在启动时运行以更新数据库?由于我的订阅没有Azure存储或访问命令行,所以这不是一个选项。请注意保留HTML标签。

如果您认为答案解决了您的问题,请将其标记为已接受。 - Alexey Andrushkevich
1个回答

3

您可以在Startup类的Configure方法中调用DbContext.Database.Migrate()。 如果有待处理的迁移,这将自动迁移您的SQLite数据库。

public void ConfigureServices(IServiceCollection serviceCollection)
{
    ...
    services.AddDbContext<MyDbContext>(options =>
            options.UseSqlite(...));
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    using(var context = new MyDbContext(...))
    {
        context.Database.Migrate();
    }
    ...
}

感谢您的回答,很抱歉我回复晚了。我尝试将DbContext db作为方法参数添加到Startup、ConfigureServices和Configure中,并在方法中添加db.Database.Migrate()(这是唯一没有突出语法错误的方法),但所有三种方法都失败了,并在启动时导致应用程序崩溃,出现三个不同的错误。我做错了什么吗? - DethoRhyne
啊,谢谢。其间我想出了一个更简单的解决方案,但这个也可以,所以我会把它标记为已回答。感谢您的帮助! - DethoRhyne
@DethoRhyne,你能分享一下你的解决方案吗?我在这个问题上遇到了同样的问题。它与这个答案有很大的不同吗? - Dan Mihalea
1
@DanMihalea 你好,很抱歉我无法帮助你解决这个问题。我之前就已经丢失了这个项目,并且我也不记得我当时是如何解决的了。 - DethoRhyne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接