代码第一次迁移 Entity Framework 6 空 Up/Down

Code First Migration Entity Framework 6 Empty Up/Down

我遇到的问题是,当我 "Add-Migration" 时,似乎没有与目标数据库进行比较并且 Up/Down 方法是空的。

这从我针对不同的环境开始。当我更新数据库并且它针对一个特定的数据库,我的开发数据库时,迁移更改工作正常。

当我更改连接字符串以针对另一个数据库,另一台服务器上的另一个开发框,并尝试为该特定环境添加迁移时,Up/Down 方法始终为空。

我尝试将更新数据库作为目标,以回滚对第二个开发箱中先前迁移的更改,但它没有改变任何东西。

如果我要将代码优先更改从一个环境迁移到另一个环境,我需要特别做什么吗?

你不需要添加新的迁移,你需要强制 EF 到 运行 所有旧的。尝试指定源和目标迁移:

Update-Database -SourceMigration: $InitialDatabase -TargetMigration: AddPostAbstract  

另一种选择是生成一个脚本,您可以通过在命令中添加 -Script 来 运行 针对其他数据库。

https://msdn.microsoft.com/en-us/data/jj591621.aspx#script

如果你有很多迁移,你可以通过删除它们并进行新的添加迁移来对它们进行角色化。

我最后做的是生成一个初始迁移,然后比较两个服务器之间的模式(@Steve Greene 评论link 描述了我在这里做的比较:http://www.techbubbles.com/sql-server/schema-compare-for-sql-server-in-visual-studio-2013/).然后,我煞费苦心地浏览了迁移代码并注释掉了不必要的部分。

一旦迁移 运行 成功,一切都会顺利地回到 运行。

我不确定是否有更好的处理方法,但这对我有用。

几个小时以来,我一直在为每次尝试都会出现这个空的 up() 和 down() 而苦苦挣扎。甚至尝试重新开始一个新项目.. 没有用..

直到我有了在 visual studio 中设置数据项目作为解决方案的默认启动项目的想法..然后奇迹发生了!

真的不能说它是否是一个解决方案(因为我仍然没有看到与基本问题的联系)但可能它可以帮助 visual studio 的宇宙星座与我的:)