Ich habe ein 'Master' Projekt Visual Studio, die Mappings Entity Framework enthält ähnlich wie:Vererbung von EntityTypeConfiguration über verschiedene Projekte in Entity Framework
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
// Table Mapping
ToTable("Users");
this.Property(x => x.Username).HasColumnName("Username");
// Other mapping goes here
}
}
Die User
Einheit abgebildet wird, ist nur eine einfache POCO:
public class User {
public string Username { get; set; }
// Other properties omitted for brevity
}
ich habe ein zweites ‚Kind‘ VS Projekt/Anwendung (die das Master-Projekt verweist), das folgend ExtendedUser
Entity/POCO hat, die auch EF abgebildet wird unter Verwendung von:
public class ExtendedUser : User {
// Extra navigation properties
public ICollection<Order> Orders { get; set; }
}
Diese Entität hat keine zusätzlichen Felder, aber verschiedene Beziehungssammlungen, die für diese Anwendung und nur für diese Anwendung spezifisch sind.
Mein Problem ist, dass ich das Mapping für die User
im ersten VS-Projekt definiert übernehmen möchte. Die Master-Klasse User
wird in mehreren anderen Projekten verwendet, so dass ich jegliche Duplizierung von Mappings vermeiden muss.
Wenn ich die Abbildung definieren als:
public class ExtendedUserMap : UserMap
{
public UserMap()
{
}
}
Dann kann ich keine der Eigenschaften ExtendedUser
Referenz als Mapping des Typs EntityTypeConfiguration<User>
nicht EntityTypeConfiguration<ExtendedUser>
.
Offensichtlich kann ich nicht von zwei Klassen erben, also bin ich unsicher von einem geeigneten Weg zu erreichen, was ich tun möchte.
Wie kann ich ExtendedUserMap
so definieren, dass ich die User
Mappings verwenden und auch die Navigationseigenschaften für ExtendedUser
?