我正在使用实体框架.net core 2.2用于我的数据库模型,在我的代码中,我正在使用
public void Configure(IApplicationBuilder app, IHostingEnvironment env, MyContextModel MyContext) {
[snipped for clarity]
MyContext.Database.Migrate();
}
将任何迁移到数据库中。它在本地工作正常,并根据需要进行任何更改。如果我将我的项目发布到Azure,一切都可以构建并上传正载,但是当网站启动时,我会收到消息
"An error occurred while starting the application."
在浏览器窗口中,桌子保持不变。我在没有MyContext.Database.Migrate();
的情况下删除并重新出版,并且该网站启动良好,因此我确定这与引起问题的自动迁移有关。我已经搜索了谷歌搜索,并尝试将线路放在DbInitializer
和其他各个地方,但没有运气。
我已经检查了Cloud Explorer,并且登录了,因此没有许可问题。
有什么想法我缺少什么或如何(以及如何)阅读一些Azure日志?
这种方法(
MyContext.Database.Migrate();
)不适合所有人。虽然它是非常适合具有本地数据库的应用程序,但大多数应用程序将需要更强大的部署策略,例如生成SQL脚本。
当您在Azure上部署时,您可以添加以下代码int of Startup.cs
的配置方法using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}
有关更多详细信息,您可以参考此线程。
显然无法在实体框架核心中运行迁移。直到几个月前,在Visual Studio中发布的选项具有"执行迁移"复选框,但现在已经消失了。
您可以尝试运行
dotnet ef database update
或针对服务器的一些类似脚本,但这带回了太多错误可提及。因此,我试图生成SQL脚本以沿
的线路运行dotnet ef migrations script
有了各种开关和其他开关,但这带回了不同的错误。最终我找到了这个。
Script-Migration -from 20190306131332_migration1 -o fileName.sql
成功地生成了我的SQL,可以手动运行数据库。
-from
是最后一次迁移,因此,如果我想进行所有更改,因为迁移1(即迁移2,迁移3等)迁移1是-from
标准
这将在root目录中创建一个名为 filename.sql
的文件,其中.sln
文件属于。