Entity Framework | Code First - Name der erstellten Tabelle

8

Ist es möglich? Ich weiß, dass ich den Namen bekommen kann, wenn ich das TableAttribute angegeben habe, aber es sollte auch möglich sein, wenn ich das Framework den Namen verwalten lasse.

Vielen Dank im Voraus.

    
0xbadf00d 10.05.2011, 11:56
quelle

4 Antworten

2

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.

    
Ladislav Mrnka 10.05.2011, 12:25
quelle
11

Ich endete damit:

%Vor%

Es ist ein Hybrid der beiden Antworten hier: DBset-Tabellenname .

    
mittio 19.12.2011 22:19
quelle
4

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%     
jmichas 01.08.2014 03:23
quelle
1

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%     
Adam 16.02.2012 15:45
quelle