2016-05-15 4 views
2

Я использую MVC 5 с Entity Framework 6, автоматические миграции отключены, ни одно семя не используется, и я записываю свои обновления в производство.Entity Framework 6 просто удалил мою базу данных?

Я задержу руки и скажу, что я довольно новичок в MVC и EF.

Я просто загрузил новую базу кода в производство и забыл, что модель была изменена. Когда я пошел на вход в новую версию, он бросил страницу с ошибкой. Хорошо, я забыл сценарий последней миграции - я сделал это, подключился к SSMS и обнаружил, что база данных пропала.

Небольшая паника, восстанавливаемая из резервной копии (я не такая глупая!) И применяю миграцию, и все начинает работать так, как должно.

Почему мой код удалил всю базу данных при изменении модели? Как сказано, автоматические миграции отключены, и это поведение не происходит на машинах разработки, они вызывают ошибку об измененной модели.


Редактировать добавить: В то время, глядя на узорах инициализации в ответе Фернандов, ни один из них не говорят «Отбросьте базу данных, а затем ничего не делать». Моя база данных была удалена, MDF и LDF ушли, ничто не является SSMS, и ничто не воссоздается на своем месте. Если бы вместо него была создана пустая база данных, я бы понял немного больше. Тем не менее, учетная запись пользователя имела DBO в базе данных, но не master, поэтому была бы возможность удалить базу данных, но не создать новую?

+1

Я не знаю ответа, но всегда стараюсь, чтобы я поставил 'Database.SetInitializer (null);' в 'OnModelCreating()' моего контекстного класса. –

+0

Кажется разумным. Я считаю, что мое удивление заключается в том, что это не происходит ни в одной из сред Dev. – RemarkLima

ответ

2

Прочтите о Database Initialization стратегий в Code-First:

http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

Проверьте инициализацию DbContext и убедитесь, что опция DropCreateDatabaseIfModelChanges является комментарием

//Database.SetInitializer(new DropCreateDatabaseIfModelChanges ());

+0

У меня нет набора инициализаторов, поэтому я бы предположил, что это значение 'CreateDatabaseIfNotExists' по умолчанию - это точное поведение, которое я видел в своей среде разработки. – RemarkLima

+0

Вы также можете установить инициализатор db в файле конфигурации. Проверьте это для каждой среды. Оба равны? –

+0

Вы имеете в виду Web.config? – RemarkLima

Смежные вопросы