it-swarm.com.de

EntityFramework-Code zuerst: Reihenfolge der Felder festlegen

Ich verwende EntityFramework mit dem "Code first" -Ansatz bei Migrationen.

Ich habe erfolgreich Tabellen aus meinen Modellen generiert, aber die Spalten werden in alphabetischer Reihenfolge und nicht in der Reihenfolge in meinem Modell hinzugefügt. 

Ich habe das ausprobiert:

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

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

Das scheint aber nicht zu funktionieren. 

Wie kann ich die Reihenfolge der Felder in der Datenbank manuell festlegen?

Ich verwende ASP.NET Core und EF Core (SqlServer) v1.1.0. 

16
Glenn Utter

Derzeit ist das Sortieren von Spalten nach Klasseneigenschaften nicht implementiert. Hier ist die lange Diskussion über die Spaltenreihenfolge. Spaltenreihenfolge # 2272

Update vom 07.12.2017

Dieses Problem befindet sich im Meilenstein Backlog. Dies bedeutet, dass es nicht .__ ist. wird für die 2.0-Version passieren. Wir werden den Rückstand neu bewerten nach der Version 2.0 und berücksichtigen Sie diesen Punkt zu diesem Zeitpunkt.

11
Rahul Nikate

Update: In EF Core 2.1 werden mindestens für die anfängliche Migration Spalten zu Tabellen in der Reihenfolge hinzugefügt, in der die entsprechenden Eigenschaften in ihren jeweiligen Klassen und nicht in alphabetischer Reihenfolge deklariert sind. Siehe hier . Beachten Sie jedoch, dass bei nachfolgenden Entity Framework-Migrationen, die in denselben Tabellen ausgeführt werden, die Spaltenreihenfolge der zuvor erstellten Spalten nicht geändert wird.

2
Lloyd Conrade

In diesem Moment unterstützt EF core es nicht. Aber es gibt eine Problemumgehung. Das heißt, Sie können SQL explizit für Ihren Migrationsvorgang angeben.

Anstelle der CreateTable-Methode in Ihren Migrationen müssen Sie die SQL-Anweisung explizit wie unten beschrieben schreiben. Dort können Sie die Reihenfolge beliebig angeben.

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

Über das Commnet rowanmiller können Sie hier nachlesen, wie Sie dieses Problem erst jetzt lösen können

1
Sampath