Шаг 15: Миграции EF Core
Миграция -- инструкция по изменению базы данных. EF Core сравнивает C# классы с текущим состоянием БД и генерирует SQL.
Установка инструментов
dotnet tool install --global dotnet-ef
Настройка Connection String
В appsettings.json проекта API:
{
"ConnectionStrings": {
"OrderDB": "Server=localhost,1433;Database=OrderManagementDB;User Id=sa;Password=YourPassword123!;TrustServerCertificate=true;"
}
}
Для Docker SQL Server:
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=YourPassword123!' \
-p 1433:1433 -d mcr.microsoft.com/mssql/server:2022-latest
Создание миграции
dotnet ef migrations add InitialCreate \
--project src/OrderManagement.Infrastructure \
--startup-project src/OrderManagement.API
EF Core создаст папку Migrations с файлами, содержащими CREATE TABLE Orders, CREATE TABLE OrderItems, индексы и внешние ключи.
Применение миграции
dotnet ef database update \
--project src/OrderManagement.Infrastructure \
--startup-project src/OrderManagement.API
Создаётся база OrderManagementDB с таблицами Orders и OrderItems.
Полезные команды
# List migrations
dotnet ef migrations list --project src/OrderManagement.Infrastructure \
--startup-project src/OrderManagement.API
# Remove last migration
dotnet ef migrations remove --project src/OrderManagement.Infrastructure \
--startup-project src/OrderManagement.API
# Generate SQL script (for production)
dotnet ef migrations script --idempotent --output migration.sql \
--project src/OrderManagement.Infrastructure \
--startup-project src/OrderManagement.API