我遇到的问题是,当我“添加迁移”时,似乎没有完成与目标数据库的比较,并且Up / Down方法是空的。
这始于我针对不同的环境。当我更新数据库时,迁移更改工作正常,并且它针对一个特定数据库,我的dev数据库。
当我将连接字符串更改为目标另一个数据库,另一个服务器上的另一个开发框,并尝试为该特定环境添加迁移时,Up / Down方法始终为空。
我尝试定位更新数据库,以便在第二个开发框中回滚对上一次迁移的更改,但它没有改变任何内容。
如果我将代码优先更改从一个环境迁移到另一个环境,是否需要专门做些什么呢?
答案 0 :(得分:1)
您不需要添加新迁移,您需要强制EF运行所有旧迁移。尝试指定源迁移和目标迁移:
Update-Database -SourceMigration: $InitialDatabase -TargetMigration: AddPostAbstract
另一种选择是通过向命令添加-Script来生成可以针对其他数据库运行的脚本。
请参阅https://msdn.microsoft.com/en-us/data/jj591621.aspx#script
如果您有大量迁移,可以通过删除它们并进行新的迁移迁移来对其进行任务。
答案 1 :(得分:1)
我最终做的是生成初始迁移,然后比较两个服务器之间的模式(@Steve Greene评论了一个很棒的链接,描述了我在这里做的比较:http://www.techbubbles.com/sql-server/schema-compare-for-sql-server-in-visual-studio-2013/)。然后,我煞费苦心地浏览了迁移代码并注释掉了不必要的内容。
迁移成功后,所有内容都恢复正常运行。
我不确定是否有更好的处理方法,但这对我有用。
答案 2 :(得分:1)
我一直在努力解决这个空洞的向上()和向下()出现在每次尝试几个小时。甚至从一个新项目开始尝试..没有用..
直到我想到在visual studio中设置数据项目作为解决方案的默认启动项目..然后魔术发生了!
不能说它是否是一个解决方案(因为我仍然没有看到与基本问题的联系),但可能它可以帮助视觉工作室的宇宙符号与我的相同:)