10

Я использую Entity Framework 4.3 Code First и тестирую функцию Migrations.Как повлиять на порядок столбцов с помощью кода структуры Entity Framework Первичные миграции

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

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

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

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

но работает Update-база данных не появляется, чтобы использовать его. Можно ли это сделать как миграцию?

+0

а) Там нет никакого способа, чтобы вставить в предыдущие колонки, не делая много взлома, б) вы не должны быть Сохраняя осуждаетесь данных в вашей базе данных с помощью «мягких удалений» - просмотрите устаревшие данные архивирования. –

+0

Какой смысл иметь столбцы в таблице базы данных в определенном порядке? Это просто хранилище данных. –

+1

Просто для эстетических целей, вот и все. Вы можете указать его, когда база данных будет создана с помощью построителя модели, поэтому просто задалось вопросом, возможно ли добавление нового столбца в качестве части переноса. Ничего страшного. – SteveB

ответ

5

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

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

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