Как повлиять на порядок столбцов с помощью Entity Framework Code First Migrations

Я использую Entity Framework 4.3 Code First и проверяю функцию Migrations.

Если я добавлю новое свойство в свой класс, а затем запустим Add-Migration из окна консоли диспетчера пакетов, я получу что-то вроде этого:

    public override void Up()
    {
        AddColumn("Products", "Discontinued", c => c.Boolean(nullable: false));
    }

Я хотел бы иметь возможность влиять на порядок столбца, поскольку я не хочу, чтобы он просто добавлялся к таблице, а скорее помещался в определенный индекс. Я думал, что могу добавить его в мою конфигурацию modelBuilder, что-то вроде:

Property(p => p.Discontinued).HasColumnOrder(2);

но запуск базы данных обновлений не используется. Можно ли это сделать как перенос?

Ответ 1

Это просто недостающая функциональность. SQL сам по себе не полагается на какой-либо неявный порядок столбцов (за некоторыми исключениями: ORDER BY,...).

Ни SQL Server, ни ORACLE не имеют прямой команды SQL DDL (aka ALTER TABLE...) для перемещения столбца.

Поэтому нет возможности изменить порядок без больших усилий (воссоздайте таблицу). См. Например