Maison > Article > base de données > Pourquoi Entity Framework crée-t-il une table plurielle alors que ma vue attend une table singulière ?
Entity Framework crée une table plurielle alors que la vue attend une table singulière
Dans le code fourni, Entity Framework crée plusieurs tables même si la vue nécessite une seule table. Cet écart se produit en raison d'une différence entre les noms de la table créée par Entity Framework et de la table référencée par la vue.
La table créée par Entity Framework suit la convention de pluralisation du nom de l'entité. Par conséquent, dans ce cas, un tableau nommé « Votes » est généré. Cependant, la vue attend un tableau nommé « Vote ». La raison principale en est la prise en charge d'EF par le connecteur MySQL .net. Supprimer la pluralisation et effectuer d'autres ajustements devraient résoudre le problème.
Premièrement, la méthode "ApplicationStart" contient une erreur mineure :
// Database.SetInitializer(new DropCreateDatabaseAlways<myDB>()); Database.SetInitializer(new myDBInitializer());
De plus, la désactivation de l'implémentation de base de "OnModelCreating" est requis :
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // modelBuilder.Entity<Vote>().ToTable("Votes") modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); }
Il a également été suggéré que le connecteur MySQL .net empêche EF de produire des bases de données, ce qui nécessite la création préalable d'une base de données vierge. Cette limitation ne s'applique pas aux versions de connecteur 6.4.4 dans le scénario actuel. La création de la base de données est préférable si l'utilisateur dispose des autorisations requises.
Ces ajustements devraient résoudre l'écart entre le nom de table au pluriel créé par Entity Framework et le nom de table au singulier attendu par la vue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!