4

Мне нужно изменить структуру (добавить несколько столбцов и изменить одну из существующих) базы данных (я внес некоторые изменения в «Модели» моего проекта WebAPI). Есть ли простой способ сделать это в Visual Studio 2013?Как обновить структуру базы данных с помощью Entity Framework Code Сначала без потери всех данных?

+0

Все данные теряются при обновлении схемы? –

+4

Вам нужно предоставить гораздо более подробную информацию о вашей проблеме. Поведение по умолчанию с использованием Code First должно состоять в том, чтобы сохранить ваши таблицы и данные. Возможно, если вы используете автоматическую миграцию и внесли некоторые изменения, которые нельзя применить, не отбрасывая и не считывая таблицу, то Entity Framework делает это для миграции, но опять же нам понадобится намного больше информации чтобы сказать вам что-нибудь окончательно. –

+0

Используете ли вы класс Initializer, который обрабатывает данные? – markpsmith

ответ

2

Вы можете использовать Entity Framework Migrations и запустить команду update-database, чтобы сгенерировать скрипт T-SQL, который можно запустить вручную. Это дает вам немного больше контроля над изменениями, применяемыми к БД. Кроме того, вы можете доверять EF, чтобы сделать это за вас. Вы можете найти все необходимые эф миграции команд здесь: http://msdn.microsoft.com/en-us/data/jj591621.aspx

EDIT Ссылку я предоставил бы раздел под названием Получение сценария SQL. Для того, чтобы сделать это для миграции, просто запустите следующую команду:

Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: yourmigrationname

Вы должны заменить «yourmigrationname» с именем вашей миграции и при запуске этого, вы получите новую вкладку с только SQL-скрипт. Затем вы можете сохранить его или запустить.

+0

ОК, я набрал базу данных обновлений. Этот «скрипт T-SQL», о котором вы говорили, является «[somenumbers] _Initial1.cs», который появился в папке «Миграции»? Как я могу запустить его? – Piotrek

+0

Я думал, что добавление-миграция «mig_name_name» заключается в том, как сгенерировать изменения после обновления вашей модели. Затем вы выполняете обновление базы данных -verbose с фиксацией этих изменений в базе данных. – jwize

0

Поскольку вы прокомментировали, как я это сделал, я отправлю его как ответ, чтобы уточнить.

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

Затем в моей модели (.edmx) я удаляю таблицу, которую я только что обновил на сервере MSSQL. Как только я это сделаю, я затем щелкните правой кнопкой мыши в открытом пространстве и нажмите «Обновить модель из базы данных». Затем я выбираю свою таблицу или таблицы, когда выбрана вкладка «Добавить». Я обнаружил, что это лучше всего работает, поскольку «Refresh» никогда не работало для меня. После того, как вы нажмете кнопку «Готово», ваша модель теперь обновляется с последними столбцами из таблицы, которую вы изменили.

Надеюсь, это поможет.

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