Как добавить таблицу (изменить модель данных) в контекст EF4 без потери данных - PullRequest
1 голос
/ 20 января 2012

У меня есть проект MVC3, который я создал с использованием парадигмы Code First, и он работает. Я создал модель, наследующую от 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 Ответ

1 голос
/ 20 января 2012

Проверка кода при первой миграции и EF 4.3 beta , где обновление базы данных поддерживается инициализатором MigrateDatabaseToLatestVersion. Пока нет версии RTM.

...