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

本文关键字:数据模型 添加 上下文 EF4 数据 情况下 | 更新日期: 2023-09-27 18:20:58

我有一个使用代码优先范式创建的MVC3项目,它很有效。我创建了一个从DBContext继承的模型,我可以向表和所有这些内容写入。我需要添加新表并更改我的模型,我使用DropCreateDatabaseIfModelChanges<T>。但是,我丢失了所有数据,由于EF4将丢弃并创建新的DB。

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; }
}

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

检查代码优先迁移和EF 4.3测试版,其中MigrateDatabaseToLatestVersion初始值设定项支持数据库升级。没有RTM版本支持这一点。