代码优先迁移尝试重新创建整个数据库而不是更新更改

Code First Migration tries to re-create enitre db instead of updating changes

我尝试先使用代码启用迁移,但我遇到了一些问题。 我在一个 mvc5 网站上工作,我有一个带有数据层的 dll,一个带有域 类 的 dll,然后是网站本身。 我已经 运行 网站并且所有表格都已创建。现在,我更改了域 类 之一上的单个 属性 的名称,并想更新数据库。但相反,它试图再次创造一切! 我更改了 属性,在控制台中输入 add-migration,然后创建了迁移文件,但它包含我所有 类 的 CreateTable,而不仅仅是那个 table/class 的更改。 我已经使用控制台启用迁移,所以应该是有序的。它在我的网站项目中创建了 Migration 文件夹和 Configuration.cs 文件。

我的代码如下所示:

    internal sealed class Configuration :DbMigrationsConfiguration<Playground.Web.Models.ApplicationDbContext>
    {
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = false;
    }

    protected override void Seed(Playground.Web.Models.ApplicationDbContext context)
    {
        //  This method will be called after migrating to the latest version.

        //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
        //  to avoid creating duplicate seed data. E.g.
        //
        //    context.People.AddOrUpdate(
        //      p => p.FullName,
        //      new Person { FullName = "Andrew Peters" },
        //      new Person { FullName = "Brice Lambson" },
        //      new Person { FullName = "Rowan Miller" }
        //    );
        //
    }
}

public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("PlaygroundContext", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

首次配置迁移时,您需要添加基线迁移。如果您有现有表,则需要告诉 EF 进行无操作迁移:

Add-Migration InitialCreate –IgnoreChanges

现在,未来的迁移将基于基线进行增量迁移。 https://msdn.microsoft.com/en-us/data/dn579398.aspx#option1