实体框架 – 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在检测到模型更改时不会自动升级架构,但如果需要填补某些显式迁移之间的差距,则它仍可能会进行自动迁移.要避免此行为,请勿使用自动迁移和显式迁移的混合. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |