EF6 Code First更新数据库,不删除数据

时间:2014-04-24 12:41:19

标签: entity-framework ef-code-first ef-migrations

我尝试使用我在实体模型中做出的更改(一些额外的表格列)更新我的数据库,但我不想放弃&重新创建数据库,因为它将删除我的所有测试数据。以前我已经完成了这项工作,并使用Seed方法创建了一些基本数据,但现在我有很多数据,我宁愿保留。

我试图运行update-database但是我收到错误:

There is already an object named 'ActivityNoteLines' in the database.

查看迁移脚本我可以看到它正在尝试创建表ActivityNoteLines。显然我不想要它。然后我使用

创建了初始迁移
Add-Migration InitialCreate –IgnoreChanges

但现在当我运行update-database时,它认为没有变化!

我确信它可以做我想做的事,但我似乎无法让它发挥作用。如果我不得不放弃&我会重新创建数据库,但想知道是否有人成功更新并保存数据。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是,“迁移”文件夹中的“创建”脚本要创建所有表。当Update运行时,它会查看表dbo.MigrationHistory以查看已运行的迁移脚本。您的数据库没有表中的create,因此Update正在尝试运行它。

您可以尝试手动将条目添加到表中,也可以编辑创建脚本并删除上下方法的内容。然后,当您运行更新时,它将运行创建脚本,该脚本将不执行任何操作,并将该条目写入MigrationHistory表。