Warum EF-5.x verwenden Sie plural name für die Tabelle?
Hatte, habe ich einige Erfahrungen in der ORM-framework wie Hibernate, sogar Entity Framework 3.0.
Standardmäßig diese frameworks verwenden Sie singular-name für die Tabelle. Zum Beispiel, Klasse Benutzer anzeigen um die Tabelle User.
Aber wenn ich migrieren zu EF-5.x durch die Verwendung von Visual Studio 2012 verwendet plural name und verursacht viele Fehler, wenn ich manuell zuordnen, die Klasse TableAttribute
als:
[Table("User")]
public class User {
//...
}
Ohne TableAttribute
, wenn ich eine DbContext
wie folgt:
public CustomContext : DbContext {
//...
public DbSet<User> Users { get; set; }
}
Dann aufrufen:
var list = db.Users.ToList();
Den generierten sql-Code sieht so aus:
Select [Extent1].[Username] From [Users] as [Extent1]
Daher der Fehler auftreten, da habe ich keine Tabelle mit dem Namen Benutzer. Futhermore, ich Verweise auf Tabellen im singular zu plural. Sie können sehen, warum in dieser link
Frage ich mich, warum Microsoft implementieren EF-5.x der Weg, anstatt das gleiche zu EF 3.0?
Aktualisiert:
Können wir sagen, das EF nicht verwenden pluralisiert Namen mit diesem code in der Kontext-Klasse:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
Selbst wenn EF tool generiert pluralisiert Namen, es zu halten, sollten die Zuordnungen zu den ursprünglichen Datenbank, sollte es nicht? Da einige Benutzer möchten vielleicht ein paar Namen der Felder in Ihrer Klasse. EF 3.0 funktioniert gut, aber die EF-5.x nicht.
Jungs, Sie geben meine einen Grund, bitte!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Konvention definiert wird, in der
PluralizingTableNameConvention
Konvention definiert, die standardmäßig in derDbModelBuilder.Conventions
Wenn Sie ausschließen wollen, es aus allen Tabellen, die Sie verwenden können, den code aus diese Frage.
Warum das so ist, wie es ist, weiß ich nicht, aber ich muss sagen, dass ich persönlich bin im Lager, die denkt, dass Tabellennamen werden sollte pluralisiert 🙂
Des Beispiel-Datenbanken ein SQL Server-Instanz, Northwind ist Plural, und AdventureWorks verwendet eine einzigartige form, also am besten, es ist kein standard etabliert. Ich habe schon ein paar Diskussion für oder gegen jeden, aber eine Sache, die jeder einigen können, ist, dass, wenn einmal wählen Sie eine naming-Strategie, sollten Sie dabei bleiben.
TableAttribute
oder eineToTable()
Aufruf des fluent-APINorthwind
undAdventureWorks
.Beim erzeugen Ihres Modell mit entity framework, deaktivieren Sie die Option "in den Plural oder singularize generierte Objektnamen"