Nous utilisons la première approche du code EF6 et nous avons activé les migrations automatiques (nous sommes au début du projet).EF 6 nom de la colonne de migration automatique majuscule renommée non détectée
Database.SetInitializer(new MigrateDatabaseToLatestVersion<OurDbContext, Configuration>());
Et dans la classe de configuration, nous avons ce qui suit est activée pour que la DB à être mis à jour automatiquement lors de chaque démarrage de l'application:
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
Les noms de colonnes DB sont explicitement mis en correspondance comme celui-ci (avec " HasColumnName ") parce que nous voulons avoir un contrôle total sur les noms de colonnes:
modelBuilder.Entity<User>().Property(u => u.Gender).IsRequired().HasColumnName("Gender");
Je viens de remarquer aujourd'hui que quand j'ai changé le nom de la colonne mappée à b Egin avec un ex minuscule:
modelBuilder.Entity<User>().Property(u => u.Gender).IsRequired().HasColumnName("gender");
... la migration automatique ne détecte pas cela comme une modification de la DB et ne fait rien dire que le nom de la colonne DB reste le même (« genre » avec un g majuscule).
Il était seulement après avoir changé le nom de la colonne à un autre mot ex:
modelBuilder.Entity<User>().Property(u => u.Gender).IsRequired().HasColumnName("genders");
... qui a provoqué les migrations automatiques de réellement changer le nom de la colonne dans la base de données, ce qui indique que en quelque sorte le chèque Le nom de colonne est fait de manière insensible à la casse.
Est-ce que quelqu'un sait si c'est par conception, ou est-ce un bug dans EF? De plus, existe-t-il un moyen de forcer les migrations automatiques à effectuer des vérifications de noms de colonnes sensibles à la casse?
Merci à l'avance
J'imagine qu'il est intentionnel puisque la base de données ne se soucie pas de cas les noms de colonnes sensibles. – Dismissile