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 ?

Pourquoi Entity Framework crée-t-il une table plurielle alors que ma vue attend une table singulière ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 10:29:30430parcourir

 Why Does Entity Framework Create a Plural Table While My View Expects a Singular Table?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn