Что такое миграция в Entity Framework?

«Что такое миграция в Entity Framework?» — вопрос из категории Entity Framework, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Миграция в Entity Framework Core — это механизм для управления изменениями схемы базы данных с помощью кода C#. Вместо ручного написания SQL-скриптов для создания или изменения таблиц, вы описываете изменения в модели данных, а EF Core генерирует и применяет соответствующие команды к БД.

Ключевые моменты:

  • Файлы миграций хранятся в проекте и содержат два основных метода:
    • Up() — применяет изменения к БД.
    • Down() — откатывает эти изменения.
  • Версионирование: Каждая миграция представляет собой отдельный шаг, что позволяет отслеживать историю изменений схемы и согласовывать её между средами разработки, тестирования и продакшена.
  • Инструменты CLI: Основные команды для работы:

    # Создать новую миграцию на основе изменений в моделях
    dotnet ef migrations add <MigrationName>
    
    # Применить все ожидающие миграции к базе данных
    dotnet ef database update
    
    # Откатить последнюю применённую миграцию
    dotnet ef database update <PreviousMigrationName>

Практический пример:

  1. Вы добавляете новое свойство Email в класс сущности User.
  2. Выполняете dotnet ef migrations add AddEmailToUser. EF Core сравнивает текущую модель с состоянием БД и создаёт файл миграции с кодом для добавления столбца Email.
  3. Выполняете dotnet ef database update, чтобы применить этот SQL-скрипт к вашей базе данных.

Best Practice: Миграции следует создавать для каждого значимого изменения модели и включать в систему контроля версий (например, Git).