gpt4 book ai didi

entity-framework - 部署到 Azure 后,EF 代码首次迁移未运行

转载 作者:行者123 更新时间:2023-12-04 13:31:47 25 4
gpt4 key购买 nike

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

当使用包管理器控制台时,这工作得很好。我

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

然后,新数据库中的一切都非常顺利,迁移执行的数据在需要的地方进行了洗牌。

我尝试通过以下方式测试发布文章上的迁移:

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

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

TLDR; Code first migrations are not running after publish to Azure

更新 1我尝试了以下任意组合:只有一个连接字符串,所以我猜这不是问题,并且检查了执行迁移。 enter image description here

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

我看到了一些关于需要向我的 Startup 类添加一些内容的引用资料,但我不确定如何继续。

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

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

更新3

好吧,深入挖掘,第一次访问数据库时我们就出错了。是的,这是有道理的,因为模型已经改变,但我已经进行了迁移,启用并检查了!同样,从包管理器控制台运行“Update-Database”时效果很好,但在发布到 Azure 期间使用“执行代码优先迁移”时效果不佳

The model backing the 'AuthContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

更新4好吧,我在这里找到了根本问题。 VS 仅在我的一个数据库上下文上为databaseInitializer 设置附加的web.config 属性,实际上,我的应用程序首先点击了未提及的那个。

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

最佳答案

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

这篇文章解释了我必须做什么来解决与此类似的问题: https://blogs.msdn.microsoft.com/webdev/2014/04/08/ef-code-first-migrations-deployment-to-an-azure-cloud-service/

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

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

enter image description here

第 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();

关于entity-framework - 部署到 Azure 后,EF 代码首次迁移未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30280346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com