如何在使用EF Data Migrations时在数据库中保留旧数据

时间:2011-12-26 09:47:43

标签: entity-framework-4 data-migration ef-migrations

我认为EF DataMigrations的目的是在更改数据库结构时保留旧数据。我认为对吗?但是当我使用迁移更新数据库时,所有旧数据都将被删除。

我是否犯了错误或者在这种情况下无法使用数据迁移?

这是DbContext:

public class CodeFirstContext : DbContext
   {
    public CodeFirstContext() : base ("ZenRandevuIzle")
    {
    }

    public DbSet<User> Users { get; set; }

    public DbSet<Role> Roles { get; set; } 

    public DbSet<Takvim> Takvims { get; set; }

    public DbSet<Musteri> Musteris { get; set; }

    public DbSet<Randevu> Randevus { get; set; }

    public DbSet<SeansTuru> SeansTurus { get; set; }

    public DbSet<Hizmet> Hizmets { get; set; }

    public DbSet<Islem> Islems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    }
}

这是Global.asax:

  Database.SetInitializer<CodeFirstContext>(new CodeFirstContextInit());

这是迁移配置:

internal sealed class Configuration : DbMigrationsConfiguration<CodeFirstContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

2 个答案:

答案 0 :(得分:1)

CodeFirstContextInit初始化程序是否删除数据库并重新创建它(它的基类是什么?)通常我在使用迁移时没有初始化程序。

答案 1 :(得分:1)

要对现有数据库使用EF 4.3 Code First Data Migrations,您需要创建一个“空”迁移,以便创建Migration-History表并建立基线。

本文中概述的步骤应该有助于http://thedatafarm.com/data-access/using-ef-4-3-code-first-migrations-with-an-existing-database