Перейти к содержанию

Создаем первую миграцию

Преже всего нам необходимо установить нужные инструменты. Существует два способа:

  • консоль диспетчера пакетов — командлеты Powershell можно использовать в консоли диспетчера пакетов Visual Studio. Их можно установить из консоли или добавить в проект пакет Microsoft.EntityFrameworkCore.Tools;
  • инструменты командной строки .NET — кросс-платформенный набор инструментов, которые можно запускать из командной строки, и который расширяет набор средств разработки .NET. Для этого нужно выполнить команду dotnet tool install --global dotnet-ef.

Далее будем использовать кросс-платформенные инструменты, но для консоли диспетчера пакетов VS есть эквиваленты для всех шагов1. Здесь и далее команды dotnet ef нужно запускать, находясь в папке проекта, в котором зарегистрирован DbContext, а не на уровне папки решения.

Установив инструменты и сконфигурировав контекст БД, можно создать первую миграцию. Для этого выполним команду, указав имя миграции (InitialSchema):

dotnet ef migrations add InitialSchema

Эта команда создаст три файла в папке Migrations:

  • файл миграции — файл в формате Timestamp_MigrationName.cs. Здесь описаны действия, которые нужно предпринять в БД, такие как создание таблицы или добавление столбца. Сгенерированные команды зависят от провайдера БД, сконфигурированного в проекте;
  • файл Migration designer.cs — здесь описана внутренняя модель модели данных данных EF Core на момент создания миграции;
  • AppDbContextModelSnapshot.cs — описывает текущую внутреннюю модель EF Core. Будет обновлен, когда добавится следующая миграция, поэтому всегда должен соответствовать текущей миграции.

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

  • инструмент командной строки .NET;
  • командлеты Powershell;
  • в коде, получив экземпляр контекста из контейнера зависимостей и вызвав метод context.Database.Migrate().

Используем инструмент командной строки; выполним команду:

dotnet ef database update

При этом выполняются 4 шага:

  1. Выполняется сборку вашего приложения;
  2. Загружаются сервисы, настроенные в Startup, включая AppDbContext;
  3. Проверяется, существует ли БД в строке подключения AppDbContext, если нет, то БД создается;
  4. Обновляется БД, применяя все непримененные миграции.

  1. Документация здесь 


Последнее обновление : 1 мая 2023 г.
Дата создания : 2 октября 2022 г.

Комментарии

Комментарии