14

Я использую EntityFramework с подходом «Code first» с миграциями.Код EntityFramework first: Установить порядок полей

Я успешно создал таблицы из своих моделей, но столбцы добавляются в алфавитном порядке, а не в порядке внутри моей модели.

Я попытался это:

[Key, Column(Order=0)] 
public int MyFirstKeyProperty { get; set; } 

[Column(Order=1)] 
public int MySecondKeyProperty { get; set; } 

Но не кажется, что работает.

Как я могу вручную задать порядок полей в базе данных?

Я использую ядро ​​ASP.NET Core и EF Core (SqlServer) v1.1.0.

ответ

10

В настоящее время упорядочение столбцов по свойствам класса не выполняется. Вот длинная дискуссия о упорядочении столбцов. Column ordering #2272

Update as on 07/12/2017

Этот вопрос находится в Backlog веха. Это означает, что для выпуска 2.0 не произойдет . Мы переоценим отставание после выпуска 2.0 и рассмотрим этот пункт в то время.

+7

довольно разочаровывающими, особенно * Там нет никакого плана, чтобы изменить это в любом из запланированных в настоящее время выпусков. Правильная вещь для этого вам не нравится, что порядок столбцов - это отредактировать сгенерированный файл миграции и переместить порядок вокруг по желанию. * +1 для ответа. –

+1

Спасибо, ребята! Ручное редактирование вызова «CreateTable» сделало трюк. Стыдно, что он еще не поддерживается EF Core, но, надеюсь, он будет. –

0

В этом ядре EF момент не поддерживает его .Но есть обходной путь для that.That, вы можете явно указать SQL на вашей операции миграции.

Вместо использования метода CreateTable в ваших миграциях вам необходимо явно написать SQL, как показано ниже. Вы можете дать заказ по своему усмотрению.

migrationBuilder.Sql("CREATE TABLE Properties(
    MyFirstKeyProperty INT NOT NULL, 
    MySecondKeyProperty int NOT NULL, 
    AGE INT NOT NULL, 
    ...... 
    ...... 
    PRIMARY KEY (MyFirstKeyProperty) 
)"); 

Вы можете прочитать о rowanmiller's commnet here about how to sort out that issue just for now

Смежные вопросы