14

Używam EntityFramework z metodą "Code first" z migracjami.Kod EntityFramework pierwszy: Ustaw kolejność pól

Udało mi się wygenerować tabele z moich modeli, ale kolumny są dodawane w kolejności alfabetycznej, a nie w zamówieniu wewnątrz mojego modelu.

Próbowałem to:

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

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

Ale to nie wydaje się działać.

Jak ręcznie ustawić kolejność pól w bazie danych?

Używam ASP.NET Core i EF Core (SqlServer) v1.1.0.

Odpowiedz

10

Aktualnie zamawiane kolumny według właściwości klasy nie są zaimplementowane. Oto długa dyskusja na temat porządkowania kolumn. Column ordering #2272

Update as on 07/12/2017

Ten problem jest w milestone zaległości. Oznacza to, że nie stanie się to w przypadku wydania 2.0. Ponownie oceniamy zaległości po wydaniu 2.0 i rozważymy ten element w tym czasie.

+7

dość rozczarowujące, zwłaszcza * Nie ma planu, aby to zmienić w każdym z zaplanowanych wydań. Prawidłową rzeczą jest to, że nie podoba ci się kolejność kolumn, to edytowanie wygenerowanego pliku migracji i przeniesienie porządku w żądany sposób. * +1 dla odpowiedzi. –

+1

Dzięki chłopaki! Ręczne edytowanie wywołania "CreateTable" rozwiązało problem. Szkoda, że ​​nie jest jeszcze wspierany przez EF Core, ale mam nadzieję, że tak się stanie. –

0

w tej chwili EF rdzenia nie obsługuje on .Ale istnieje obejście dla that.That jest, można jednoznacznie określić SQL na swojej pracy migracji.

Zamiast korzystać z metody CreateTable w swoich migracjach, musisz jawnie napisać kod SQL, jak pokazano poniżej. Możesz podać zamówienie, jak chcesz.

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

Można przeczytać o rowanmiller's commnet here about how to sort out that issue just for now