Изменить модель после создания базы данных только на коде EF4 - PullRequest
1 голос
/ 02 ноября 2010

Привет, извините за мой плохой английский ... Используя только код EF4, я создал несколько классов POCO, и моя база данных была сгенерирована из этого. Все работало нормально, я вставил некоторые данные в таблицы, но теперь мне нужно создать новое свойство в одном из моих классов. Если я просто создаю его, приложение дает мне исключение: {"Модель, поддерживающая контекст 'TestContext', изменилась с момента создания базы данных. Либо удалите / обновите базу данных вручную, либо вызовите Database.SetInitializer с экземпляром IDatabaseInitializer. Например, стратегия RecreateDatabaseIfModelChanges автоматически удалит и создаст заново базу данных, и, необязательно, заполнить ее новыми данными. "}

Я пытался вручную создать поле в таблице, но он все еще жалуется ... Кто-нибудь знает, есть ли способ, и если да, то как можно ли вручную обновить схему базы данных (я не знаю не хотите воссоздать его, потому что у меня уже есть данные) для соответствия модели?

Ответы [ 2 ]

1 голос
/ 02 ноября 2010

Это должно работать, если вы убедитесь, что ваш новый столбец точно соответствует вашему новому свойству.

Например, если вы добавляете свойство NewProp

public class MyEntity
{
    [Key]
    public int Id;

    public string PropA;
    public int PropB;

    public int NewProp;

}

, то в таблицу базы данных MyEntities, вы бы добавили столбец NewProp типа int, а не null.

Что вы можете сделать, чтобы проверить правильность добавляемого столбца, это переименовать вашу базу данных, а затем позволить Code-First пересоздать базу данных и посмотреть, чтоотличается между исходной и новой базой данных.

1 голос
/ 02 ноября 2010

EF генерирует частичные классы.Таким образом, вы можете добавить новые свойства (поля) в другой частичный класс.

...