Wenn Sie nicht TableAttribute
oder fluent api zum Definieren des Tabellennamens verwenden, wird der Name aus dem Namen der DbSet
-Eigenschaft im Kontext abgeleitet. Die einzige Sache, die den Namen in solch einem Fall ändern kann, ist die Pluralisierung, die standardmäßig verwendet wird.
Also wenn du:
%Vor% Die Tabelle sollte den Namen Users
haben.
Ich endete damit:
%Vor%Es ist ein Hybrid der beiden Antworten hier: DBset-Tabellenname .
Der richtige Weg dazu ist die Methode GetTableName
von der folgenden Seite: Ссылка
Dies beinhaltet Unterstützung für den Meta-Tag und den Model Builder .ToTable()
changes. Die Beispiele auf dieser Seite geben im Grunde den DbSet
-Eigenschaftsnamen zurück, der nicht notwendigerweise der Tabellenname in der Datenbank ist.
Zum Beispiel, wenn Sie hatten:
%Vor%Der Code auf dieser Seite würde "Einstellungen" für einen Tabellennamen zurückgeben, wenn der tatsächliche DB-Tabellenname "Configs" lautet. Und Sie würden die gleichen Probleme haben, wenn Sie verwendet haben:
%Vor%Durch die Verwendung des Codes im bereitgestellten Link werden all diese Probleme behoben. Hier ist es als Erweiterung geschrieben:
%Vor%Dies sollte Tabelle für Typ und Tabelle für Hierarchievererbung behandeln.
Siehe: Ссылка
Der Trick besteht darin, den Vererbungsbaum zu durchlaufen, bis Sie ein überschriebenes Tabellenattribut oder einen Nicht-Objekt-Basistyp finden. Dies könnte möglicherweise fehlschlagen, wenn es möglich ist, von einer Klasse zu erben, die keiner Tabelle zugeordnet ist ... was mir nicht sicher ist. Wenn Sie [NotMapped] für eine Klasse ausführen können, müssen wir nur die GetTableDefType-Methode ändern, um in diesem Fall einmal rückwärts zu gehen.
%Vor%Tags und Links entity-framework entity-framework-4.1 entity-framework-4 code-first