J'utilise EntityFramework avec l'approche "Code d'abord" avec les migrations.
J'ai réussi à générer des tableaux à partir de mes modèles, mais les colonnes sont ajoutées dans un ordre alphabétique plutôt que dans l'ordre de mon modèle.
J'ai essayé ceci:
[Key, Column(Order=0)]
public int MyFirstKeyProperty { get; set; }
[Column(Order=1)]
public int MySecondKeyProperty { get; set; }
Mais cela ne semble pas fonctionner.
Comment définir manuellement l'ordre des champs dans la base de données?
J'utilise ASP.NET Core et EF Core (SqlServer) v1.1.0.
Actuellement, le classement des colonnes par propriété de classe n'est pas implémenté. Voici la longue discussion sur l'ordre des colonnes. Commande de colonne # 2272
Ce problème est dans le jalon de l'arriéré. Cela signifie que ce n'est pas va se passer pour la version 2.0. Nous allons réévaluer l'arriéré suivant la version 2.0 et considérons cet élément à ce moment-là.
Mise à jour: dans EF Core 2.1, au moins pour la migration initiale, des colonnes sont ajoutées aux tableaux dans l'ordre dans lequel les propriétés pertinentes sont déclarées dans leurs classes respectives, plutôt que dans l'ordre alphabétique. Voir ici . Cependant, notez que les migrations Entity Framework ultérieures effectuées sur les mêmes tables ne modifieront pas l'ordre des colonnes créées précédemment.
Pour le moment, EF core ne le prend pas en charge .Mais il existe une solution de contournement. En d'autres termes, vous pouvez spécifier explicitement le code SQL dans votre opération de migration.
Au lieu d'utiliser la méthode CreateTable
dans vos migrations, vous devez écrire explicitement le code SQL comme indiqué ci-dessous. Vous pouvez alors donner l'ordre à votre guise.
migrationBuilder.Sql("CREATE TABLE Properties(
MyFirstKeyProperty INT NOT NULL,
MySecondKeyProperty int NOT NULL,
AGE INT NOT NULL,
......
......
PRIMARY KEY (MyFirstKeyProperty)
)");
Vous pouvez lire sur le commnet de rowanmiller ici pour savoir comment résoudre ce problème pour le moment