我正在尝试为新的移动应用构建一个网络服务/后端我正在构建使用Xamarin Forms和Azure服务。我一直在关注tutorial。
一切都很好,直到我进入"将项目部署到Azure App Service"部分,我有2个相关问题。我用自己的DataObjects和标准的" ToDoList"得到同样的问题。以应用程序为例。
System.Data.SqlClient.SqlException (0x80131904): Cannot attach the file '{LocalFilePath}\App_Data\{databaseName}.mdf' as database '{databaseName}'.
我注意到指定的" App_Data"中没有任何内容。在发布到应用服务之前,我是否可能需要做一些事情来构建.mdf?我尝试通过App Service以三种不同的方式发布数据库,并且每个方式都给了我上面描述的完全相同的情况,所以我认为我错过了一些明显的东西,因为我&# 39;我是Azure和移动应用程序开发的新手。
我已经了解了如何获得"执行代码优先迁移"可用,但我还没有找到任何实际上允许我部署数据库的东西,因为它一直在说"没有选择数据库来发布",我无法获得"更新数据库"初始失败后显示的选项。我有什么明显的遗失吗?
答案 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部署提供程序部分。
对于应用程序使用Entity Framework Code First上下文类访问的数据库,显示发生此错误后,我尝试重新发布数据库,并且发布向导有2个不同之处。首先,我不再拥有"更新数据库"选项,我只有"执行代码优先迁移" “设置”选项卡上的选项,显示为灰色。其次,预览选项卡显示"没有选择数据库来发布"
执行代码优先迁移(在应用程序启动时运行)。
当您选择此选项时,部署过程会自动在目标服务器上配置应用程序Web.config文件,以便Code First使用
MigrateDatabaseToLatestVersion
初始化程序类。
如果在程序包管理器控制台中运行Enable-Migrations命令,则可以选中此复选框。有关详细信息,请参阅此document中的实体框架代码优先迁移部分。
简单来说,您可以利用" QuickStart"从Azure门户项目首先通过EF代码迁移数据库。部署项目时,使用目标数据库(例如Azure数据库)连接字符串更新本地连接字符串,在"设置>下;数据库及#34;在VS发布Web向导中,如下所示: