sql >> Base de Datos >  >> RDS >> Mysql

Entity Framework crea un nombre de tabla plural, pero la vista espera un nombre de tabla singular.

Así que renuncié a tratar de hacerlo de la manera que sentí que debía hacerse y eliminé la pluralización por completo. Realmente no lo sé con certeza, pero supongo que el problema tiene que ver con el soporte de EF del conector mysql .net. Esto es lo que hice.

Primero, hubo un error en mi método ApplicationStart:

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

En segundo lugar, dejé de llamar a la implementación base de OnModelCreating, que no figura en el código original, ya que solo la implementé según la sugerencia de jgauffin:

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

En tercer lugar, leí en algunas publicaciones que MySQL .net Connector no permite que EF CREE una base de datos, por lo que inicialmente creé la base de datos en blanco. Parece que este ya no es el caso con el conector 6.4.4+, y siempre que el usuario de la cadena de conexión tenga la capacidad de crear nuevas bases de datos, funciona mejor si no existe una inicialmente.

Una vez, hice todo lo anterior, parecía funcionar. Así que ahora al menos puedo seguir adelante. Con suerte, podremos descubrir la causa de la discrepancia entre plural y singular en el futuro.

Gracias a todos por su tiempo y esfuerzo.