首先更新数据库代码时出错

时间:2015-03-02 09:51:30

标签: asp.net asp.net-mvc entity-framework ef-code-first ef-migrations

我有一个.net MVC项目,它使用Code第一种方法,我需要添加一个新表,并且迁移文件夹已经存在并且包含许多之前已经创建的迁移文件;当我运行Add-Migration时:

  

无法生成显式迁移,因为以下内容   显式迁移正在等待:   [201304230714010_InformationalMessage,201305231312259_Remove   硬编码货币]。之前应用挂起的显式迁移   尝试生成新的显式迁移。

所以我运行Update-Database –Verbose它给了我错误:

  

已有一个名为' InformationalMessage'在里面   数据库中。

似乎它再次执行迁移文件,因为它已经存在而给我这个错误是正常的。

有人可以帮我解决如何使用我的新表更新此代码吗?

3 个答案:

答案 0 :(得分:0)

错误说您已经有待处理的迁移,因此首先运行挂起的迁移,然后运行迁移。

  1. update-database -verbose(先运行待处理的迁移)。

  2. Add-migration <nameOfMigration>(添加您的迁移)。

  3. Update-database -verbose(在最后一次运行您的迁移)。

答案 1 :(得分:0)

我偶尔会遇到这种情况。我所做的是在Up()和Down()方法中为该迁移注释掉CreateTable命令。当我需要一个生产脚本时,我通常会将我的更改转换为单个更新。

答案 2 :(得分:0)

暂时将DropTable("InformationalMessage")添加到201304230714010_InformationalMessage迁移的副本中 - 请注意,这将丢失该表中当前的所有数据,但应该让您可以添加新的迁移...如果这是一个问题,请在处理迁移时备份实际的表数据。