sql >> Databasteknik >  >> RDS >> Mysql

Entity Framework skapar ett tabellnamn i plural, men vyn förväntar sig ett singular tabellnamn?

Så jag gav upp att försöka göra det som jag kände att det borde göras och tog bort pluralisering tillsammans. Jag vet inte riktigt säkert, men jag antar att problemet har att göra med mysql .net-anslutarens stöd för EF. Här är vad jag gjorde.

Först fanns det ett fel i min ApplicationStart-metod:

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

För det andra slutade jag kalla OnModelCreating-basimplementeringen som inte finns med i den ursprungliga koden eftersom jag bara implementerade den enligt jgauffins förslag:

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

För det tredje läste jag i några inlägg att MySQL .net Connector inte låter EF faktiskt SKAPA en databas, så jag hade först skapat den tomma DB:n. Detta verkar inte längre vara fallet med anslutning 6.4.4+, och så länge som din anslutningssträngs användare har möjlighet att skapa nya databaser, fungerar det bättre om en inte existerar från början.

En gång gjorde jag allt ovan, det verkade fungera. Så nu kan jag åtminstone gå vidare. Förhoppningsvis kan vi ta reda på orsaken till plural/singulardiskrepansen i framtiden.

Tack till alla för deras tid och ansträngning.



  1. Skicka e-postmeddelanden med bilagor i SQL Server (T-SQL)

  2. Fulltextsökning med InnoDB

  3. #1273 - Okänd sammanställning:'utf8mb4_unicode_ci' cPanel

  4. Kombinera flera underordnade rader till en rad MYSQL