Wie kann ich die Namenskonvention der automatisch generierten Viele-zu-Viele-Tabelle ändern?Wie ändere ich die Namenskonvention von Viele-zu-Viele-Tabellenbeziehungen?
Angenommen ich zwei Klassen:
public class User
{
public int UserId { get; set; }
public virtual List<Role> Roles { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public virtual List<User> Users { get; set; }
}
Standardmäßig wird dies eine Tabelle Userroles genannt erstellen.
ich den Namen dieser ein Tabelle zum Beispiel, zu UsersInRoles ändern können, indem Sie das folgende in der OnModelCreating außer Kraft setzen meine DbContext mit:
modelBuilder.Entity<User>()
.HasMany(p => p.Roles)
.WithMany(p => p.Users)
.Map(mc =>
{
mc.MapLeftKey("UserId");
mc.MapRightKey("RoleId");
mc.ToTable("UsersInRoles");
});
Aber was ich wirklich tun möchte Ändern Sie die Namenskonvention so, dass standardmäßig alle automatisch generierten Viele-zu-Viele-Tabellen diese neue Konvention verwenden. Ich kann nicht herausfinden, wie das geht oder ob es überhaupt möglich ist. Ich möchte nicht jedesmal, wenn ich eine dieser Beziehungen spezifiziere, 9 Zeilen zusätzlichen Code spezifizieren.
Ich verwende derzeit EF Version 6.0.0-rc1.
Aus Neugier, warum willst du das wirklich machen? Die Kodierung nach Konvention verliert ihren ganzen Charme, wenn Sie immer wieder andere haben. –
Sie können sich [Custom Conventions] (http://msdn.microsoft.com/en-us/data/jj819164.aspx) ansehen. –
@TonyHopkinson, In meinem realen Szenario, ich schreibe ein Framework, das alle Tabellennamen mit einem Präfix basierend auf ihrer "Komponente" Speicherort (wie Core, HR, Finanzen, etc.) ändert. Während ich in der Lage war, einen Catch-All für die Umbenennung von Standardtabellen zu schreiben, funktionierte es nicht mit diesen Viele-zu-Viele-Tabellen, und ich kann nicht herausfinden, wie. Was mein Beispiel betrifft, ich habe diese Konvention schon lange benutzt und würde gerne dabei bleiben. –