Mysql
 sql >> Base de données >  >> RDS >> Mysql

Entity Framework crée un nom de table au pluriel, mais la vue attend un nom de table au singulier ?

J'ai donc renoncé à essayer de le faire comme je pensais que cela devait être fait et j'ai supprimé la pluralisation. Je ne sais pas vraiment avec certitude, mais je suppose que le problème est lié à la prise en charge d'EF par le connecteur mysql .net. Voici ce que j'ai fait.

Tout d'abord, il y avait un bogue dans ma méthode ApplicationStart :

//WRONG
//Database.SetInitializer(new DropCreateDatabaseAlways<myDB>());
Database.SetInitializer(new myDBInitializer());

Deuxièmement, j'ai arrêté d'appeler l'implémentation de base OnModelCreating qui n'est pas répertoriée dans le code d'origine puisque je ne l'ai implémentée que selon la suggestion de jgauffin :

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //DONT DO THIS ANYMORE
    //base.OnModelCreating(modelBuilder);
    //modelBuilder.Entity<Vote>().ToTable("Votes")
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

Troisièmement, j'ai lu dans certains messages que le connecteur MySQL .net ne permet pas à EF de CRÉER une base de données. J'avais donc initialement créé la base de données vierge. Cela ne semble plus être le cas avec le connecteur 6.4.4+, et tant que l'utilisateur de votre chaîne de connexion a la possibilité de créer de nouvelles bases de données, cela fonctionne mieux s'il n'en existe pas initialement.

Une fois, j'ai fait tout ce qui précède, cela a semblé fonctionner. Alors maintenant, je peux au moins avancer. Espérons que nous pourrons trouver la cause de l'écart pluriel / singulier à l'avenir.

Merci à tous pour leur temps et leurs efforts.