update-database -force命令没有更新实体框架代码中的基础 - 先

时间:2015-11-04 09:20:54

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

可能这个问题似乎重复了。但这是我面对命令的问题。

如果我运行此命令,

update-database -force

我得到的第一个错误..

  

数据库中已有一个名为tblAbc的对象

然后我用谷歌搜索,每次我得到一个stackoverflow链接建议运行 添加迁移初始--IgnoreChanges

如果我运行此命令然后运行更新命令,则无错误 - 正在运行种子方法

  

但它没有将数据库与新更新同步

然后我尝试了多次但同样的问题,因此我寻找了一些替代解决方案&我知道了。

使用update-database -Script但如果我运行此命令并收到以下错误。

  

用户癌症保存对话框

然后我尝试通过打开SQL Managment Studio和

来解决这个问题
  

工具>>选项>>设计师>>取消选中“禁止保存需要表重新创建的更改”

但在此之后也会出现同样的错误信息。

然后我尝试在我的上下文类

中添加以下配置
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion  <context, Configuration>());

它运行成功并运行种子方法,但它没有同步最新的更新。

1 个答案:

答案 0 :(得分:5)

使用现有数据库

根据您的上下文状态,您需要以下其中一项...

如果您的数据库背景仅包含您现有的表格而且以后没有任何自定义更改

Add-Migration Initial -IgnoreChanges

这将创建一个空白的迁移脚本

update-database

这会将数据库更新为此迁移,但不会应用任何更改。您现在可以将更改添加到数据库上下文中。完成后,请执行以下操作

Add-Migration Custom

这将生成一个包含您的更改的迁移脚本。然后再次更新您的数据库。

update-database

如果您的数据库背景包含您现有的表格并且您的自定义更改

Add-migration Initial

这会生成一个迁移脚本。浏览迁移脚本并删除UP和DOWN方法中对现有表的任何引用。您将留下一个仅包含您的自定义逻辑的脚本。

update-database

希望这有帮助!