entity-framework - 即使禁用了自动迁移,Update-Database 也会尝试进行自动迁移

标签 entity-framework entity-framework-migrations

我在一个使用 EF5 的 4 名开发人员团队中工作,每个人都在自己的本地数据库上工作。到目前为止,我们一直在使用自动迁移,但我们已经接近需要发布到生产环境的时间点,因此我们禁用了自动迁移并开始添加基于代码的显式迁移。

问题是:我运行了 Update-Database开发人员创建新的显式迁移后的命令,我收到以下错误:

Applying code-based migrations: [201209080142319_CreatedDate.LastModifiedDate.Additions].
Applying code-based migration: 201209080142319_CreatedDate.LastModifiedDate.Additions.
Applying automatic migration:    201209080142319_CreatedDate.LastModifiedDate.Additions_AutomaticMigration.
Automatic migration was not applied because it would result in data loss.

即使我禁用了自动迁移,为什么还会出现此错误?我可以通过删除显式迁移然后重新搭建它(运行 Add-Migration)来修复此错误。然后Update-Database运行良好,没有提及任何关于“自动迁移...”的内容。此外,我在运行 Add-Migration 时创建的迁移代码与我的队友创建的代码相同。我不明白为什么它会尝试自动迁移,因为 AutomaticMigrationsEnabled = false; .

我在这里想念什么?

最佳答案

我讨厌回答自己的问题,但我又遇到了这个问题。我团队中的一位开发人员在他们的本地机器上重新启用了自动迁移,然后创建了一个显式迁移,它在我运行它后立即重现了这种行为。

Entity Framework 将总是 在运行具有 Source 的显式迁移之前运行自动迁移.resx 中定义的属性文件,即使 AutomaticMigrationsEnabled = false .显式迁移将只有 Source如果它是在运行自动迁移后创建的,则设置属性。

结果是禁用自动迁移仅意味着 EF 在检测到模型更改时不会自动升级您的架构 - 但如果它需要填补某些显式迁移之间的空白,它可能仍会执行自动迁移。为避免此行为,请勿混合使用自动迁移和显式迁移。

关于entity-framework - 即使禁用了自动迁移,Update-Database 也会尝试进行自动迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341470/

相关文章:

entity-framework - Entity Framework 目前适合什么类型的项目?

entity-framework-core - Entity Framework Core OwnsOne 创建单独的表,而不是像预期的那样将属性添加到同一个表

entity-framework-4 - 为什么 Entity Framework 的 EF Migrations Add-Migration 步骤需要数据库连接字符串?

c# - 具有单数据库多上下文的 EF6 Code First 迁移

c# - 如何强制迁移使用客户端上下文的连接字符串触发迁移

c# - AuthorizationOptions 的依赖注入(inject)

entity-framework-core - EF Core 工具忽略 .net core 2.1 和 3.1 中的 launchSettings.json

c# - 给 Entity Framework 生成的类添加数据注解

.net - Entity Framework 4.3在应用程序启动时运行迁移

entity-framework-6 - 使用 MigrationHistory 检测 Entity Framework 模型对于数据库是否太旧