【问题标题】:Entity framework code first migration coming up blank实体框架代码首次迁移空白
【发布时间】:2015-08-13 13:44:42
【问题描述】:

我正在使用实体框架来附加到现有数据库,我将在其中添加更多表。这里有人说这是不可能的,我需要将新表分开保存在新数据库中。这是那个问题:

Do not create existing table during Migration

我做了一些调查,在 MSDN 上发现了这个:

https://msdn.microsoft.com/en-us/data/dn579398.aspx

据此,我应该像这样运行初始迁移:

add-migration initial -ignorechanges

所以我这样做了,这应该是查看数据库并进行匹配。更新数据库后,我应该添加另一个没有 -ignorechanges 的迁移。当我进行第二次迁移时,我得到了这个:

namespace PTEManager.Domain.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class second : DbMigration
    {
        public override void Up()
        {
        }

        public override void Down()
        {
        }
    }
}

所以它不会尝试添加我需要的 2 个新表和关系。它是空白的。我尝试从数据库中删除 _migrationhistory 表并重新开始,但仍然没有。我错过了什么?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework entity-framework-migrations


    【解决方案1】:

    听起来您正在添加第二个迁移而不进行任何更改。你需要做的是:

    • DBSet<ModelName> 属性添加到所有现有的上下文中 表。
    • 使用-ignorechanges 创建初始迁移
    • DBSet<ModelName> 属性添加到所有新表的上下文中。
    • 照常创建第二个迁移。

    然后,第二次迁移应包含仅创建所需的新表、关系等的代码。无论您是在迁移之间更新数据库还是在最后只更新一次都没有关系。

    【讨论】:

    • Ben 谢谢你 90% 的工作。但是,现在我收到一个错误:列“dbo.Users.u_user_id”与在外键“FK_dbo.PTEInteractiveCourses_dbo.Users_ModifyUserId”中引用列“PTEInteractiveCourses.ModifyUserId”的数据类型不同。无法创建约束。在数据库中,它是一个数值。我该如何解决这个问题?
    • 该错误表明您正在尝试在不同数据类型的 2 列之间创建外键约束“数字”是触摸模糊、int、float、decimal?。在新问题中发布模型和表结构的相关代码,因为这是新问题。
    【解决方案2】:

    您可以尝试添加正常迁移并修改 Up/Down 方法,使其仅包含 2 个新表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 2018-01-29
      • 2013-12-29
      • 2012-11-29
      相关资源
      最近更新 更多