我有一个我使用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; }
}
答案 0 :(得分:1)
检查代码首次迁移和EF 4.3 beta MigrateDatabaseToLatestVersion
初始化程序支持数据库升级的位置。没有RTM版本支持这一点。