14

Ich verwende EntityFramework mit dem "Code first" Ansatz mit Migrationen.EntityFramework-Code zuerst: Reihenfolge der Felder festlegen

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

Ich habe dies versucht:

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

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

Aber das scheint 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.

Antwort

10

Das Sortieren von Spalten nach Klasseneigenschaft ist nicht implementiert. Hier ist die lange Diskussion über die Reihenfolge der Spalten. Column ordering #2272

Update as on 07/12/2017

Dieses Problem ist in dem Backlog Meilenstein. Dies bedeutet, dass es nicht für die Version 2.0 passieren wird. Wir werden den Rückstand nach der Veröffentlichung von 2.0 erneut prüfen und diesen Artikel zu diesem Zeitpunkt berücksichtigen.

+7

Ganz enttäuschend lesen kann, vor allem * Es gibt keinen Plan dieser geplanten Releases in einem der zur Zeit zu ändern. Die korrekte Sache, die Sie nicht mögen, ist die Spaltenreihenfolge, um die erzeugte Migrationsdatei zu bearbeiten und die Reihenfolge wie gewünscht zu verschieben. * +1 für die Antwort. –

+1

Danke Jungs! Das manuelle Bearbeiten des CreateTable-Aufrufs hat den Zweck erfüllt. Schade, dass es noch nicht von EF Core unterstützt wird, aber hoffentlich wird es sein. –

0

In diesem Moment EF Kern nicht unterstützt es .Aber es eine Abhilfe für that.That ist, explizit SQL auf Ihrer Migrationsoperation angeben.

Anstatt die CreateTable-Methode in Ihren Migrationen zu verwenden, müssen Sie das SQL wie unten gezeigt explizit schreiben. Dort können Sie die Reihenfolge angeben, wie Sie möchten.

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

Sie über die rowanmiller's commnet here about how to sort out that issue just for now

Verwandte Themen