У меня есть проект "master" Visual Studio, который содержит сопоставления структур Entity Framework, похожие на:
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
// Table Mapping
ToTable("Users");
this.Property(x => x.Username).HasColumnName("Username");
// Other mapping goes here
}
}
Объект User
, который отображается, является простым POCO:
public class User {
public string Username { get; set; }
// Other properties omitted for brevity
}
У меня есть второй "дочерний" проект/приложение VS (который ссылается на главный проект), который имеет следующий ExtendedUser
Entity/POCO, который также отображается с использованием EF:
public class ExtendedUser : User {
// Extra navigation properties
public ICollection<Order> Orders { get; set; }
}
Этот объект не имеет дополнительных полей, но имеет разные коллекции отношений, которые являются специфическими для этого приложения, и только это приложение.
Моя проблема в том, что я хотел бы наследовать отображение, определенное для User
в первом проекте VS. Мастер User
класс будет использоваться в нескольких других проектах, поэтому мне нужно избегать дублирования сопоставлений.
Если я определяю отображение как:
public class ExtendedUserMap : UserMap
{
public UserMap()
{
}
}
Тогда я не могу ссылаться ни на один из свойств ExtendedUser
, поскольку отображение имеет тип EntityTypeConfiguration<User>
not EntityTypeConfiguration<ExtendedUser>
.
Очевидно, что я не могу наследовать от двух классов, поэтому я не уверен в том, что вы достигнете того, что я хочу сделать.
Как я могу определить ExtendedUserMap
, чтобы я мог использовать сопоставления User
, а также включить свойства навигации для ExtendedUser
?