вопросы по определению DropCreateDatabaseIfModelChanges в веб-приложении asp.net - PullRequest
1 голос
/ 18 марта 2012

Я добавил следующий инициализатор для моего веб-приложения asp.net: -

namespace Learning.DAL
{
public class SchoolInitializer : DropCreateDatabaseIfModelChanges<LearningContext>
{
protected override void Seed(LearningContext context)
{
var students = new List<Student>
{
new Student { FirstMidName = "test", LastName = "test2",
EnrollmentDate = DateTime.Parse("2012-01-01") },
//code does here

но у меня есть следующие вопросы, которые мне нужна помощь: -

  1. Если приложение находится в рабочем состоянии, когда приложение проверит, если IfModelChanges, и заново создаст Db соответственно? только когда я остановлю и перезапущу сервер, или когда первый пользователь посетит определенную страницу?

  2. Будет ли удаление и повторное создание базы данных причиной удаления уже существующих данных?

  3. если я удалю свойство из набора сущностей в моих новых изменениях, что произойдет с его данными?

  4. Если я добавлю ненулевое свойство в существующий набор сущностей, что произойдет, когда база данных будет удалена и воссоздана? BR

1 Ответ

1 голос
/ 18 марта 2012

Если приложение находится в производстве, когда оно будет проверяться если IfModelChanges и заново создать Db соответственно? только когда я остановлюсь и повторно запустить сервер, или когда конкретная страница посещается первым Пользователь

IIS периодически перезаписывает домены приложений. EF кэширует свою модель один раз для каждого домена приложения. Следовательно, когда ваше приложение перерабатывается и ваше приложение впервые использует контекст, EF запустит ваш инициализатор. Таким образом, в этот момент, если модель отличается от базы данных, ваш SchoolInitializer будет выполнен.

приведет к удалению и повторному созданию базы данных, что приведет к уже там нужно удалить?

Да. Только данные, вставленные в ваш метод Seed, будут там после восстановления базы данных.

если я удалю свойство из набора сущностей в моих новых изменениях, что будет случится с его данными?

если я добавлю ненулевое свойство в существующий набор сущностей, что будет произойдет, когда база данных будет удалена и воссоздана?

EF обнаруживает, что модель была изменена, и база данных будет удалена и создана заново.

Мой совет: инициализаторы базы данных предпочтительнее в среде разработки. Для производства будет лучше создать базу данных, используя скрипт. Это будет полезно в управлении изменениями. Вы также можете посмотреть на функцию миграции баз данных в EF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...