Изменение потребляемых классов Entity Framework после создания и развертывания БД - PullRequest
0 голосов
/ 19 января 2012

Предположим, у нас есть веб-сайт ASP.NET MVC3, использующий подход Entity Framework Code First для работы с базой данных.

Система теперь работает в тестовой среде.

Есличасть DbContext выглядит следующим образом:

public DbSet<Incident> Incidents { get; set; }

вызовет ли это проблемы совместной работы DB-Code, если я, например, добавлю Properties в класс Incident?

Или инфраструктура простообновлять таблицы базы данных автоматически и будут обрабатывать старые записи, которые были созданы без новых свойств, как если бы они были нулевыми?

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Это зависит от настроек инициализации вашей базы данных.(CreateDatabaseIfNotExists, DropCreateDatabaseWhenModelChanges, DropCreateDatabaseAlways)

например: Database.SetInitializer (new CreateDatabaseIfNotExists ())

  • Если вы не установили инициализацию базы данных, EF по умолчанию будетinitlizer " CreateDatabaseIfNotExists " и будет выдавать InvalidOperationError.

  • Если вы установите значение " DropCreateDatabaseWhenModelChanges ", EF будет воссоздавать базу данных на основе вашегоновая модель.Но вам также понадобятся необходимые права доступа для создания базы данных, и это опасно, если вы находитесь в производственной среде.

  • Если вы установите « DropCreateDatabaseAlways », EFбудет воссоздавать базу данных при каждом запуске приложения.

0 голосов
/ 19 января 2012

Насколько я знаю, он не будет обновлять базу данных автоматически, у вас будет сообщение об ошибке, сообщающее, что контекст был изменен. Для этого вы должны сделать «Drop and Create» для базы данных !!

...