实体框架 – Update – 数据库尝试自动迁移,即使禁用自动迁移

前端之家收集整理的这篇文章主要介绍了实体框架 – Update – 数据库尝试自动迁移,即使禁用自动迁移前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个使用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.

我在这里缺少什么?

解决方法

我讨厌回答自己的问题,但我再次遇到这个问题.我的团队中的开发人员重新启用了本地机器上的自动迁移,然后创建了一个显式迁移,一旦我运行它就会重现这种行为.

实体框架将始终运行一个自动迁移,然后运行显式迁移,即使在.resx文件中定义了Source属性,即使AutomaticMigrationsEnabled = false.如果在运行自动迁移后创建了显式迁移,则只会将Source属性设置为该属性.

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

原文链接:https://www.f2er.com/mssql/81741.html

猜你在找的MsSQL相关文章