2017-02-01 6 views
0

У меня есть проект C#, где я использую Entity Framework 6.1 для управления базой данных. В процессе разработки я хотел добавить несколько полей в некоторые из таблиц. Поэтому я редактировал миграцию InitialCreate.cs, чтобы включить новые поля, а затем удалил мою базу данных в SQL Server. Когда я иду, чтобы запустить Update-Database я получаю следующее сообщение об ошибке ...Entity Framework 6.1 заставляет миграцию вместо использования отредактированного InitialCreate

Unable to update database to match the current model because there are pending changes and automatic migration is disabled 

Поскольку я удалил базу данных с сервера я не ожидал, чтобы получить эту ошибку. Нет таблицы миграции, поэтому я ожидал, что модифицированная версия файла InitialCreate.cs будет использоваться для создания базы данных. Я стараюсь избегать множественных миграций в отношении к одному файлу InitialCreate.cs. Почему приложение не просто использует файл InitialCreate.cs, который редактировался напрямую? Зачем нужно создавать новый файл миграции?

Я знаю, что могу просто использовать Add-Migration в консоли диспетчера пакетов, но мне не нужны несколько файлов миграции. Я просто хочу. Я подумал с кодом: сначала я мог это сделать.

ответ

2

Вначале вы должны внести все изменения в свои модели и позволить обновить базу данных с помощью инициализаторов или миграций. Если вы хотите, чтобы свести к минимуму количество файлов миграции всегда можно удалить (свернуть) их и сбросить базовый уровень:

1) Удалить все ваши миграции

2) Добавить миграцию не-оп с помощью add-migration MyStartingPoint -IgnoreChanges. Это займет моментальный снимок текущего состояния ваших моделей без кода в Up()/Down(). update-database.

3) Теперь внесите необходимые изменения в модель и добавьте новую миграцию, которая будет просто новой.

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