实体框架代码第一次迁移空白

时间:2015-08-13 13:44:43

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

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

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表并重新开始但仍然没有。我错过了什么?

2 个答案:

答案 0 :(得分:2)

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

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

然后,第二次迁移应包含仅创建所需的新表,关系等的代码。无论是在迁移之间更新数据库还是在结束时只更新一次都无关紧要。

答案 1 :(得分:0)

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