Heim >Datenbank >MySQL-Tutorial >Warum erstellt Entity Framework singuläre Tabellen in MySQL, selbst wenn mein Modell plural ist?

Warum erstellt Entity Framework singuläre Tabellen in MySQL, selbst wenn mein Modell plural ist?

DDD
DDDOriginal
2024-10-31 08:03:30407Durchsuche

Why Does Entity Framework Create Singular Tables in MySQL Even When My Model is Plural?

Plural-Tabellennamenkonflikt in Entity Framework

Dieses Problem tritt auf, wenn Entity Framework mit MySQL verwendet wird und versucht wird, eine Tabelle mit einem Pluralnamen zu erstellen aus einem singulären Modell.

PROBLEM:

Im bereitgestellten Code wird von der Ansicht eine Tabelle mit dem Namen „votes“ erwartet, aber Entity Framework erstellt eine Tabelle mit dem Namen „ vote" in MySQL. Diese Diskrepanz führt zur Ausnahme „Tabelle ‚mydb.vote‘ existiert nicht.“

LÖSUNG:

Um dieses Problem zu beheben, können die folgenden Schritte ausgeführt werden genommen:

  1. Entfernen Sie den Basiskonstruktoraufruf in OnModelCreating:
    Ursprünglich wurde der Basiskonstruktoraufruf in OnModelCreating verwendet, um die Pluralisierung zu implementieren. Es wird jedoch empfohlen, diesen Aufruf zu entfernen, um das Pluralisierungsverhalten zu verhindern.
  2. Entfernen Sie die PluralizingTableNameConvention:
    Der Code enthielt ursprünglich eine Zeile zum Entfernen der PluralizingTableNameConvention. Dies ist weiterhin erforderlich, um die automatische Pluralisierung von Tabellennamen zu verhindern.
  3. Vorhandene Datenbank löschen:
    Es wird empfohlen, die vorhandene Datenbank zu löschen und Entity Framework dann zu erlauben, eine neue zu erstellen eins. Dadurch wird sichergestellt, dass der richtige Tabellenname verwendet wird.
  4. Berechtigungen zum Erstellen von Datenbanken sicherstellen:
    Stellen Sie sicher, dass der in der Verbindungszeichenfolge angegebene MySQL-Benutzer über ausreichende Berechtigungen zum Erstellen neuer Datenbanken verfügt.
  5. Pluralisierung aus ApplicationStart entfernen:
    Der Code verwendete ursprünglich DropCreateDatabaseAlways, was die Pluralisierung deaktivierte. Dies wurde jedoch fälschlicherweise als Database.SetInitializer(new DropCreateDatabaseAlways()) implementiert. Stattdessen sollte es Database.SetInitializer(new myDBInitializer()) sein.

Nach der Implementierung dieser Änderungen sollte Entity Framework die „Votes“-Tabelle in MySQL korrekt erstellen, den Tabellennamenskonflikt lösen und die ermöglichen um ordnungsgemäß zu funktionieren.

Das obige ist der detaillierte Inhalt vonWarum erstellt Entity Framework singuläre Tabellen in MySQL, selbst wenn mein Modell plural ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn