Ответ
Процесс удаления поля (столбца) из таблицы с помощью миграций EF Core состоит из трех шагов: изменение модели, создание миграции и обновление базы данных.
1. Удалите свойство из класса модели (Entity)
// Было:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string OldField { get; set; } // Удаляем это свойство
}
// Стало:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
// Свойство OldField удалено
}
2. Создайте и изучите миграцию
Выполните команду в консоли диспетчера пакетов (Package Manager Console) или терминале:
dotnet ef migrations add RemoveOldFieldFromProduct
EF Core сравнит модель с текущим состоянием БД и сгенерирует файл миграции. В методе Up будет операция DropColumn:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "OldField",
table: "Products");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "OldField",
table: "Products",
type: "nvarchar(max)",
nullable: true);
}
3. Примените миграцию к базе данных
dotnet ef database update
Критически важные замечания для продакшена:
- Резервное копирование: Перед удалением столбца убедитесь, что в нем нет нужных данных. Если данные могут понадобиться, сначала выполните их выгрузку или перенос в другую таблицу.
- Даунтайм: Операция
ALTER TABLE DROP COLUMNможет заблокировать таблицу. Для больших таблиц планируйте работу в период низкой нагрузки. - Зависимости: Убедитесь, что удаляемое поле не используется в:
- Хранимых процедурах, представлениях или индексах БД.
- Коде приложения (кроме класса модели).
- Контрактах API (DTO), которые могут сериализовать это поле.