Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 更新数据库-force命令未更新实体框架代码中的基-first_Sql Server_Asp.net Mvc_Entity Framework_Ef Code First - Fatal编程技术网

Sql server 更新数据库-force命令未更新实体框架代码中的基-first

Sql server 更新数据库-force命令未更新实体框架代码中的基-first,sql-server,asp.net-mvc,entity-framework,ef-code-first,Sql Server,Asp.net Mvc,Entity Framework,Ef Code First,也许这个问题似乎是重复的。但这是我面临的命令问题 如果我运行这个命令 update-database -force 我得到的第一个错误 数据库中已存在名为tblAbc的对象 然后我在谷歌上搜索,每次我都会得到一个建议运行的stackoverflow链接 添加迁移初始-忽略更改 如果我运行这个命令,然后运行update命令,没有错误-运行seed方法 但它不会将数据库与新的更新同步 然后我尝试了很多次,但都是同一个问题,因此我寻找了一些替代解决方案&我得到了 使用updatedatabase-S

也许这个问题似乎是重复的。但这是我面临的命令问题

如果我运行这个命令

update-database -force
我得到的第一个错误

数据库中已存在名为tblAbc的对象

然后我在谷歌上搜索,每次我都会得到一个建议运行的stackoverflow链接 添加迁移初始-忽略更改

如果我运行这个命令,然后运行update命令,没有错误-运行seed方法

但它不会将数据库与新的更新同步

然后我尝试了很多次,但都是同一个问题,因此我寻找了一些替代解决方案&我得到了

使用updatedatabase-Script,但如果我运行此命令并得到以下错误

“用户取消保存”对话框

然后,我试图通过打开SQL管理工作室和

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

但在此之后也会出现相同的错误消息

然后我尝试在我的上下文类中添加以下配置

System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion  <context, Configuration>());
System.Data.Entity.Database.SetInitializer(新的MigrateDatabaseToLatestVersion());

它成功运行并运行了Seed方法,但没有使用现有数据库同步最新更新。

根据上下文的状态,您需要执行以下操作之一

如果数据库上下文仅包含现有表,而没有自定义更改,请执行以下操作

Add-Migration Initial -IgnoreChanges
这将创建一个空白的迁移脚本

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

Add-Migration Custom
这将生成一个迁移脚本,其中包含您所做的更改。然后再次更新数据库

update-database
如果数据库上下文包含现有表和自定义更改

Add-migration Initial
这将生成一个迁移脚本。浏览迁移脚本,删除UP和DOWN方法中对现有表的任何引用。您将得到一个只包含自定义逻辑的脚本

update-database

希望这有帮助

您是否对现有数据库使用EF?@heymega。。是的..我有一个先使用ef代码生成的现有数据库,现在我在我的db(C#)中做了一些更改,需要在sql表中更新相同的数据库。这可能是一条真正的消息,您已经定义了两个同名的数据库表。我以前做过很多次。如果您使用fluentapi设置了指定的名称,那么仔细检查每一个名称并检查它们可能是值得的。检查您的
ToTable()
值以了解duplicates@Coulton..actually假设我删除了tblAbc,然后运行命令,那么它会给出相同的错误,但不是tblAbctblXyz@Coulton..See如果我使用fluentapi将C#class设置为Abc,我会将表名设置为tblAbc。。