为Azure移动应用程序部署数据库失败

时间:2017-02-09 06:48:07

标签: azure mobile azure-mobile-services

我正在尝试为新的移动应用构建一个网络服务/后端我正在构建使用Xamarin Forms和Azure服务。我一直在关注tutorial

一切都很好,直到我进入"将项目部署到Azure App Service"部分,我有2个相关问题。我用自己的DataObjects和标准的" ToDoList"得到同样的问题。以应用程序为例。

  1. 当我第一次发布时,我选择"更新数据库"在"设置"发布向导中的选项卡,以便将我的新DataObjects / Schema推送到我的新数据库。然后,我点击发布,我收到错误回复说System.Data.SqlClient.SqlException (0x80131904): Cannot attach the file '{LocalFilePath}\App_Data\{databaseName}.mdf' as database '{databaseName}'.我注意到指定的" App_Data"中没有任何内容。在发布到应用服务之前,我是否可能需要做一些事情来构建.mdf?
  2. 发生此错误后,我尝试重新发布数据库,并且发布向导有2个不同之处。首先,我不再拥有"更新数据库"选项,我只有"执行代码优先迁移" “设置”选项卡上的选项显示为灰色。其次,预览选项卡显示"没有选择数据库来发布"
  3. 我尝试通过App Service以三种不同的方式发布数据库,并且每个方式都给了我上面描述的完全相同的情况,所以我认为我错过了一些明显的东西,因为我&# 39;我是Azure和移动应用程序开发的新手。

    1. 通过Azure门户创建移动应用后端+服务+数据库,然后部署"快速入门"来自Azure门户的项目。
    2. 遵循类似于上面的教程,但这是专门用于发布默认插入的ToDoList数据库模式。这是我跟着的tutorial
    3. 遵循上面的教程,但使用我自己的自定义DataObjects而不是教程中描述的那些。
    4. 我已经了解了如何获得"执行代码优先迁移"可用,但我还没有找到任何实际上允许我部署数据库的东西,因为它一直在说"没有选择数据库来发布",我无法获得"更新数据库"初始失败后显示的选项。我有什么明显的遗失吗?

1 个答案:

答案 0 :(得分:0)

  

当我第一次发布时,我选择" 更新数据库"在"设置"发布向导中的选项卡,以便将我的新DataObjects / Schema推送到我的新数据库。然后,我点击发布,我收到一个错误,回复说System.Data.SqlClient.SqlException(0x80131904):无法附加文件' {LocalFilePath} \ App_Data {databaseName} .mdf'作为数据库' {databaseName}' 。我注意到指定的" App_Data"中没有任何内容。在发布到应用服务之前,我是否可能需要做一些事情来构建.mdf?

正如官方document在发布网络向导中提及更新数据库,如下所示:

  

在“发布Web”向导中选中标记为“更新数据库”的复选框。 此复选框显示的是应用程序访问的SQL Server数据库,而不使用实体框架代码优先上下文类。

如果在部署应用程序之前未创建源本地数据库,则会收到如下错误:

有关详细信息,请参阅此document中的 dbDacFx Web部署提供程序部分。

  

发生此错误后,我尝试重新发布数据库,并且发布向导有2个不同之处。首先,我不再拥有"更新数据库"选项,我只有"执行代码优先迁移" “设置”选项卡上的选项,显示为灰色。其次,预览选项卡显示"没有选择数据库来发布"

对于应用程序使用Entity Framework Code First上下文类访问的数据库,显示

执行代码优先迁移(在应用程序启动时运行)

  

当您选择此选项时,部署过程会自动在目标服务器上配置应用程序Web.config文件,以便Code First使用MigrateDatabaseToLatestVersion初始化程序类。

如果在程序包管理器控制台中运行Enable-Migrations命令,则可以选中此复选框。有关详细信息,请参阅此document中的实体框架代码优先迁移部分。

简单来说,您可以利用" QuickStart"从Azure门户项目首先通过EF代码迁移数据库。部署项目时,使用目标数据库(例如Azure数据库)连接字符串更新本地连接字符串,在"设置>下;数据库及#34;在VS发布Web向导中,如下所示: