我有两个用于迁移的文件夹(AuthContext和UserProfileContext),每个文件夹都有自己的迁移和一些后续运行的自定义sql,用于数据迁移等等。

这在使用包管理器控制台时工作正常。 一世

  1. 从生产中恢复
  2. 运行Update-Database -ConfigurationTypeName Migrations.Auth.Configuration
  3. 运行Update-Database -ConfigurationTypeName Migrations.UserProfile.Configuration

然后在新数据库中一切都很开心,迁移执行的数据在需要的地方洗牌。

我试图通过以下方式测试发布的迁移:

  1. 在dev数据库上恢复生产
  2. 单个连接字符串(所有上下文使用相同的)指向dev数据库
  3. 发布到azure网站
  4. 选中“应用代码优先迁移”复选框
  5. 选择单个连接字符串

好的,它发布得很好; 然而,当我去看数据库时,什么也没发生! 它没有创建必要的表,列或数据移动。

TLDR; 发布到Azure后,代码优先迁移未运行

更新1我尝试了下面的任何组合:只有一个连接字符串,所以我猜这不是问题,并检查执行迁移。 在此输入图像描述

在发布api运行但没有进行数据库更改。 我想也许我需要首先点击它,但是当我尝试使用api(现在当然依赖于新的数据库设置)时我只是得到随机错误,并且数据库仍然没有改变。

我已经看到有一些关于需要在我的Startup类中添加内容的引用,但我不知道如何继续。

更新2我通过在我的连接字符串中添加“Persist Security Info = True”解决了一个问题。 现在它实际连接到数据库并调用我的API; 但是,没有正在运行的迁移。 我将调试器附加到Azure开发环境并逐步完成...在我的第一个数据库调用它进入有问题的迁移的配置类,然后barfs我无法追踪错误。

public Configuration()
{
    AutomaticMigrationsEnabled = false;
    MigrationsDirectory = @"Migrations\Auth";
    ContextKey = "AuthContext";
}

更新3

好的,挖了下来,第一次碰到数据库我们就错了。 是的,这是有道理的,因为模型已经改变,但我已经进行了迁移,启用和检查! 同样,它在从包管理器控制台运行“Update-Database”时工作正常,但在发布到Azure期间使用“执行代码优先迁移”时却没有

自创建数据库以来,支持'AuthContext'上下文的模型已更改。 请考虑使用“代码优先迁移”来更新数据库( http://go.microsoft.com/fwlink/?LinkId=238269 )。

更新4好的我在这里找到了根本问题。 VS正在我的一个数据库上下文中为databaseInitializer设置额外的web.config attrib,实际上未提及的那个是从我的应用程序中首先命中的。

所以现在我必须弄清楚如何让它包含多个上下文,或者将我的所有内容组合到一个上下文中。

===============>>#1 票数:10

这篇文章的答案不是很详细。

本文解释了为解决类似问题我必须采取的措施: https//blogs.msdn.microsoft.com/webdev/2014/04/08/ef-code-first-migrations-deployment-to-an- Azure的云服务/

我将粗略描述下面我必须采取的步骤:

步骤1将连接字符串添加到dbContexts,在我的情况下,它们都是相同的。

在此输入图像描述

步骤2将此添加到您的web.config

 <appSettings>
    <add key="MigrateDatabaseToLatestVersion" value="true"/>
  </appSettings>

步骤3并将其添加到global.asax.cs / Startup.cs(OWIN启动)的底部

    var configuration = new Migrations.Configuration();
    var migrator = new DbMigrator(configuration);
    migrator.Update();

===============>>#2 票数:3 已采纳

解决了! 总结后代的解决方案:

启用代码优先迁移仅启用它们,每个复选框选中一个基本连接字符串,无论有多少上下文具有针对该基本连接字符串的迁移。 所以在我的情况下,我将两个问题分成了两个不同的连接字符串。

然后我遇到其他错误,并确定如果你将基本连接字符串更改为模型支持asp标识,则需要包含(一次发布)附加标记库(“AuthContext”,throwIfV1Schema:false)

  ask by Joshua Ohana translate from so

未解决问题?本站智能推荐:

2回复

部署到未运行EF代码优先迁移的Azure

我正在使用Code First Migrations运行Entity Framework。 我的新版本添加了一个表,修改了一些表,并运行了一些脚本。 当使用update-database在本地进行开发时,这非常理想。 部署后,未创建新表,并且我从客户端收到错误。 我将调试器附加到已部
4回复

EntityFramework代码在部署到Azure后未运行的第一次迁移

我正在使用代码优先迁移在ASP.NET中开发Web应用程序。 它在本地工作正常,但在部署到Azure后,代码首次迁移不会执行。 我一直在一步一步地学习本教程几次,但我无法发现我的设置有什么问题。 这是相关代码: DB上下文: 连接字符串: (它在发布时被替换,但以防万一
1回复

EF代码优先(Azure)-访问数据库时发生错误

直到最近,我的解决方案只有一个Web项目。 它已部署到Azure。 然后对WebJobs提出了要求,它应该共享数据层,因此我将任何EntityFramework代码(Configuration / IdentityModels)提取到自己的项目中。 现在,当我尝试使用命令行“添加迁
3回复

Azure EF Code First Migration Initializer

我只是搞乱Azure,我似乎无法让我的Db工作。 我按照它在这里说的那样: https : //www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/并且我更新了我的web.config以获得:
1回复

使用Azure进行CodeFirst DB迁移

到目前为止,我无法从已配置为自动部署到Azure的Visual Studio联机代码库中进行自动迁移以进行自动迁移。 这里有一个未解决的类似问题: 带有Azure Git部署的EntityFramework自动迁移 我现在的问题是,数据库在本地工作副本和Azure DB之间无法同步,
1回复

程序集之间的实体框架代码优先迁移不匹配

我正在构建一个Azure服务(具有Web角色和辅助角色),二者均使用Entity Framework Code-first模型类引用一个.dll文件( model dll )。 模型dll启用了自动迁移。 我计划使辅助角色更容易扩展,因此我打算将一些dll文件( 辅助dll )上传到Bl
1回复

DropCreateDatabaseAlways与Code First不兼容Azure Sql数据库

我正在尝试创建一个微服务架构。 我有一个无状态服务与Azure Service Cluster Fabric上部署的Entity Framework相结合。 但是我的问题是当我有一个带DropCreateDatabaseAlways的初始化程序时,数据库被删除但没有重新创建。 我有以下
1回复

通过EF代码优先迁移进行脱机部署

我们开发了一个基于Microsoft堆栈运行的Intranet Web应用程序,该应用程序会不时在客户端网络上进行更新。 手动完成更新有两个组件: 在旧文件的顶部安装/解压缩新的应用程序文件 执行一个SQL脚本,该脚本运行先前版本和当前版本之间的增量 我们正在将代码库
1回复

部署到Azure Web App后未创建的代码优先表

我首先使用MVC + EF代码创建此网站。 它在Azure VM和本地上运行完美。 最近,我想切换到Azure Web App,因此我将网站部署到了VS2013中的Web App服务中。 一切看起来都不错,检查了执行代码优先迁移,没有错误。 但是,当我查看数据库时,仅创建了20张
2回复

EF代码优先-忘记运行“添加迁移”

我有一个已经发布到生产服务器的Web项目。 在开发机器上,我对模型类进行了一些更改,并运行Update-Database而不运行Add-Migration 。 我试过了 但我得到了错误 未应用自动迁移,因为这会导致数据丢失。 如何回滚,以便获得完整的SQL脚本以在生