【问题标题】:update-database -force command is not updating the base in entity framework code -firstupdate-database -force 命令不更新实体框架代码中的基础 -first
【发布时间】:2015-11-04 09:20:53
【问题描述】:

这个问题可能是重复的。但这是我在使用命令时面临的问题。

如果我运行这个命令,

update-database -force

我得到的第一个错误..

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

然后我用谷歌搜索,每次我得到一个建议运行的 stackoverflow 链接 Add-Migration Initial -IgnoreChanges

如果我运行这个命令然后运行更新命令,没有错误 - 运行种子方法

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

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

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

用户取消了保存对话框

然后我尝试通过打开 SQL Managment Studio 来解决这个问题

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

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

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

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

它运行成功并以 Running Seed 方法运行,但不同步最新更新。

【问题讨论】:

  • 您是否将 EF 与现有数据库一起使用?
  • @heymega.. 是的..我有一个使用 ef 代码优先生成的现有数据库现在我在我的 db(C#) 中进行了一些更改,并且需要在 sql 表中更新相同的数据库跨度>
  • 这可能是一个真实的消息,您已经定义了两个同名的数据库表。我以前做过很多次。如果您使用 fluent API 设置它们,则可能值得仔细检查每个名称并检查已指定的名称。检查您的 ToTable() 值是否重复
  • @Coulton..实际上假设我删除了 tblAbc 然后运行命令然后它给了我同样的错误但它给了 tblXyz 而不是 tblAbc
  • @Coulton..看看我是否使用流式 API 将 C# 类作为 Abc 我将表名设置为 tblAbc..

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


【解决方案1】:

使用现有数据库

根据您的上下文状态,您需要以下之一...

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

Add-Migration Initial -IgnoreChanges

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

update-database

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

Add-Migration Custom

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

update-database

如果您的数据库上下文包含您现有的表以及您的自定义更改

Add-migration Initial

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

update-database

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    使用类型、大小和 maxLength 更新迁移文件。

    示例: 最大长度:50, 类型:“varchar(50)”,

    属性:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多