繁体   English   中英

EF迁移没有待处理的更改,但仍然抱怨有待更改。 EF如何跟踪这一点?

[英]There are no pending changes for EF migration and still it complains that there are pending changes. How does EF keep track of this?

我的项目中有几个迁移文件,因为我对上次迁移进行了手动修改,所以我不想使用“包管理器控制台”重新生成它。 我只需要添加1列。 所以手动添加了以前的迁移(我可以这样做,因为还没有人升级)。

现在,当我启动我的项目时,本地数据库似乎创建了我的新列,但我确实得到了一个例外:“无法更新数据库以匹配当前模型,因为存在挂起的更改并且禁用了自动迁移”

看起来我能解决这个问题的唯一方法是生成一个额外的迁移 - 尽管这个migation生成的代码行完全与我在之前的迁移中手动编写的代码相同...

我想知道 - EF如何跟踪这个并且有没有办法绕过它?

还有一个问题 - 我想要限制我拥有的迁移文件数量是不对的? 我目前认为在理想的情况下,我的软件的每个版本最多只能有1个迁移文件,以便更好地概述我的代码......

谢谢,

EF将序列化模型的哈希值保存在_MigrationHistory表中,并在使用迁移时对它们进行比较,以确保数据库模式与模型匹配。 我不建议试图绕过这个。 如果您希望最大限度地减少文件数量,则可以回滚然后组合迁移。 但我不认为这是值得的。 我只是定期将我的迁移放入子文件夹中

我推荐这篇文章:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

检查数据库中名为_MigrationHistory的表。 这将包含您运行的迁移历史记录。

我认为单一迁移不是一个好主意。 因为:

  • 每次迁移都像数据库的一个版本 您可以通过执行“update-database -target migration MigrationName”返回任何版本。

  • 如果很多人正在研究这个项目,那么跟踪你的数据库所处的版本就会变得非常困难,而且会变得混乱。

如果要添加额外的列,可以强制执行以前的迁移。 否则,最好进行多次迁移以避免混淆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM