【问题标题】:How to persist old data in database while using EF Data Migrations如何在使用 EF 数据迁移时将旧数据保留在数据库中
【发布时间】:2011-12-26 09:47:42
【问题描述】:

我在想 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;
    }
}

【问题讨论】:

  • 您对数据库做了哪些更改?
  • 如果我们更改任何内容,所有数据都会被删除。
  • 您能发布您的 DbContext 和迁移配置吗?您使用的是自动迁移还是手动迁移?您是否不小心将旧的 ef 代码保留在删除数据库的第一个 db 初始化程序中?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    这篇文章中列出的步骤应该可以帮助http://thedatafarm.com/data-access/using-ef-4-3-code-first-migrations-with-an-existing-database

    【讨论】:

    • 提供的链接已失效
    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 2010-12-07
    • 2018-04-14
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多