Ответ
Миграции в EF Core — это система контроля версий для схемы базы данных. Она позволяет синхронизировать модель данных в коде (ваши классы-сущности DbContext и DbSet) со структурой реальной реляционной базы данных, применяя изменения инкрементально и сохраняя существующие данные.
Основной рабочий процесс:
- Изменение модели: Вы редактируете классы сущностей или
DbContext. - Создание миграции: Выполняете команду, которая сравнивает текущую модель с предыдущим состоянием и генерирует код для применения изменений к БД.
dotnet ef migrations add AddDescriptionToProduct - Проверка и применение: Сгенерированный код миграции (файлы в папке
Migrations/) можно отредактировать, а затем применить к базе данных.dotnet ef database update
Структура сгенерированной миграции:
public partial class AddDescriptionToProduct : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// Код для применения изменений
migrationBuilder.AddColumn<string>(
name: "Description",
table: "Products",
type: "nvarchar(max)",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
// Код для отката изменений (противоположность Up)
migrationBuilder.DropColumn(
name: "Description",
table: "Products");
}
}
Практические рекомендации:
- Именование: Давайте миграциям осмысленные имена, отражающие суть изменения (например,
AddEmailToUser,CreateOrderTable). - Ручная правка: Сгенерированный код
Up/Downможно и иногда нужно редактировать вручную для сложных операций (например, переноса данных, добавления индексов). - Продакшен: В рабочих средах миграции часто применяются как часть пайплайна CI/CD, а не вручную. Для этого используется команда
efчерез CLI или методcontext.Database.Migrate()при старте приложения. - SQL-скрипты: Можно сгенерировать SQL-скрипт для ручного применения DBA:
dotnet ef migrations script --output migration.sql - Подход Code-First: Миграции — это краеугольный камень подхода Code-First, когда структура БД определяется и управляется из кода приложения.