我无法运行迁移以创建/更新托管在 Azure 上的 Sql Db。它们在我的 LocalDb 本地运行良好,但在发布到 Azure 时似乎完全被忽略了。
详细信息:- Asp.Net MVC 5.2.3 - Entity Framework 6.1.3 - Visual Studio Team Services(在线)- Azure Web App 和 Azure SQL Db(在 Imagine / Dreamspark 订阅下)
我创建了一个不使用 CI 的不同应用程序,但使用了 Visual Studio 中的发布功能,它发布得很好并且工作正常。我已经从 Azure 中删除了该 Web 应用程序和数据库,因为订阅只允许一个数据库。
我想这可能是我在 VSTS 中设置构建定义时缺少的东西,我只是不确定是什么。
我努力了:
- https://blogs.msdn.microsoft.com/webdev/2014/04/08/ef-code-first-migrations-deployment-to-an-azure-cloud-service/(这对我没有任何作用)
- https://www.benday.com/2016/11/07/using-tfs-build-to-deploy-entity-framework-database-migrations-with-migrate-exe/(我收到了我没有的构建错误'我的 bin 文件夹中没有发布定义)
...以及其他一些人(我不再打开窗户,否则我也会链接它们)。
我当前的构建步骤包括:
- NuGet 还原 - NuGet 安装程序
- 构建解决方案 - Visual Studio 构建
- 测试程序集 - Visual Studio 测试
- 发布符号路径 - 索引源和发布符号
- 发布工件 - 发布构建工件
在我的本地环境中,EF 在我启用迁移、添加迁移、更新数据库时起作用。我猜上述步骤都没有做到这一点,所以我需要一个或多个步骤。Ben Day 的博客似乎应该可以工作,但由于某种原因,它没有找到我的 bin/release 文件。
在发布上述成功的构建定义后,实际的应用程序就可以很好地部署到 Azure。只是数据库被完全忽略了。使用 SSMS,我检查了 Azure 数据库,虽然它存在,但它没有我的表或数据。
我错过了什么?
谢谢。
**编辑 - 找到了我丢失的简单项目。我需要将数据库的连接字符串添加到 Azure 中的 Web 应用程序。它现在有我的初始表,并使用这些表存储数据,但不进行迁移。所以我在过去两天所做的一些事情让我的初始表格在那里。现在..记住它是什么。
**第二次编辑 - 所以,我认为在我修复 VSTS 中的连接字符串之前,这些表已进入发布数据库。我尝试的其中一件事是创建一个单独的数据库项目。我想当我在某个时候推送时,当时存在的表也推送到释放,我只是看不到它们,因为我没有将应用程序和数据库连接在一起?无论如何,EF 迁移仍未被识别。我再次尝试了 Ben Day 的建议,但出现了构建错误:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
我正在使用 EF 6.1.3