如何在不丢失数据的情况下将表(更改数据模型)添加到EF4上下文

时间:2012-01-20 12:10:47

标签: c# entity-framework dynamic dbcontext

我有一个我使用Code First范例创建的MVC3项目,它可以工作。我创建了一个继承自DBContext的模型,我可以写入表中的所有内容。我需要添加新表并更改我的模型而我使用DropCreateDatabaseIfModelChanges<T>但是,我丢失了所有数据,因为EF4将丢弃结束创建新数据库。

public class MyDbInitializer : DropCreateDatabaseIfModelChanges< MyDb >

我可以使用UpdateDatabaseIfModelChanges<T>之类的不同界面吗?

我的模型看起来像这样:

[Table("Person")]

public class Person
{
    public int ID { get; set; }
    public string name { get; set; }
    public string country { get; set; }
    public string gender { get; set; }
}

public class MyDb: DbContext
{
    public DbSet<Person> People { get; set; }
}

然后我打电话给:

Database.SetInitializer(new MyDbInitializer ());


public class MyDbInitializer : DropCreateDatabaseIfModelChanges< MyDb >

    {
        protected override void Seed(MyDb context)

我要创建这个:

[Table("Person")]

public class Person
{
    public int ID { get; set; }
    public string name { get; set; }
    public string country { get; set; }
    public string gender { get; set; }
}
[Table("NewTable")]

public class NewTable
{
    public int ID { get; set; }
    public string name { get; set; }
    public string position { get; set; }
    public string description { get; set; }
}


public class MyDb: DbContext
{
    public DbSet<Person> People { get; set; }
    public DbSet< NewTable > NewTable { get; set; }

}

1 个答案:

答案 0 :(得分:1)

检查代码首次迁移和EF 4.3 beta MigrateDatabaseToLatestVersion初始化程序支持数据库升级的位置。没有RTM版本支持这一点。