Mysql
 sql >> Database >  >> RDS >> Mysql

Entity Framework crea un nome di tabella plurale, ma la vista prevede un nome di tabella singolare?

Quindi ho rinunciato a provare a farlo nel modo in cui ritenevo che dovesse essere fatto e ho rimosso la pluralizzazione del tutto. Non lo so per certo, ma presumo che il problema abbia a che fare con il supporto di EF del connettore mysql .net. Ecco cosa ho fatto.

Innanzitutto, si è verificato un bug nel mio metodo ApplicationStart:

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

In secondo luogo, ho smesso di chiamare l'implementazione di base di OnModelCreating che non è elencata nel codice originale poiché l'ho implementata solo su suggerimento di jgauffin:

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

Terzo, ho letto in alcuni post che MySQL .net Connector non consente a EF di CREA effettivamente un database, quindi inizialmente avevo creato il DB vuoto. Questo sembra non essere più il caso con il connettore 6.4.4+ e, fintanto che l'utente della stringa di connessione ha la possibilità di creare nuovi database, funziona meglio se inizialmente non ne esiste uno.

Una volta, ho fatto tutto quanto sopra, sembrava funzionare. Quindi ora posso almeno andare avanti. Speriamo di poter capire la causa della discrepanza plurale/singolare in futuro.

Grazie a tutti per il loro tempo e impegno.