Материал: Глава 17.2 Entity Framework

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

§17.11 Миграции

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

Добавим к существующему классу Thesis свойство для хранения аннотации к дипломному проекту:

Листинг 17.33

1

 

public class Thesis

 

 

2

{

 

 

3

 

public int Id { get; set;

}

 

4

 

public string Name { get;

set; }

5

 

public int? ProfessorId {

get; set; }

6

 

public virtual Professor Professor { get; set; }

7

 

public string Annotation { get; set; }

 

8

}

 

 

Для миграции в Visual Studio перейдем к окну Консоль диспетчера пакетов, которое можно найти внизу VS. Если такого окна нет, то его можно открыть, перейдя к меню Вид → Другие окна → Консоль диспетчера пакетов.

Для добавления функционала миграций введем в это окно следующую команду:

enable-migrations

После ввода команды нажмем на Enter. И в результате выполнения данной команды в проект будет добавлена папка Migrations, в которой будут два файла: Configration.cs (содержит базовую конфигурацию миграций) и

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

Далее выполним в консоли следующую команду:

26

add-migration "AddAnnotationMigration"

И после выполнения этой команды в папку Migrations будет добавлена новая миграция.

В миграции определяются два метода: Up() и Down(). В методе Up с

помощью вызова метода AddColumn добавляется новый столбец Annotation

в уже имеющуюся таблицу dbo.Theses. Метод Down удаляет столбец на случай, если они существуют. Фактически эти методы равнозначны выражению ALTER в языке SQL, которое меняет структуру базы данных и ее таблиц.

И в завершении чтобы выполнить миграцию, применим этот класс,

набрав в той же консоли команду:

update-database

Эта команда обновит базу данных, добавив в нее новый столбец. Причем данные, которые уже были в таблицы, сохранятся.

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

update-database -script

В итоге будет сгенерирован скрипт SQL, который можно выполнить для используемой базы данных.

27

Источник: https://studfile.net/preview/16573805/