Myślę, że jest to możliwe w nhiberate, ale moje pytanie dotyczy Entity Framework.Entity Framework: mapuj wiele klas do jednej tabeli
W moim modelu bazy danych - którego nie mogę zmodyfikować - mam nadmiarowe kolumny, które chciałbym przechowywać w różnych klasach.
Przykład:
public class DateParams
{
public DateTime CreationDate { get; set; }
public DateTime ModificationDate { get; set; }
// some methods
}
public class Localization
{
public String EnglishLabel { get; set; }
public String FrenchLabel { get; set; }
// some methods
}
A potem chciałbym używać ich w niektóre z moich modeli:
public class Account // Localization && DateParams
{
public int ID { get; set; }
public String Name { get; set; }
public Localization Localization { get; set; }
public DateParams DateParams { get; set; }
}
public class Lead // DateParams only
{
public int ID { get; set; }
public String Name { get; set; }
public DateParams DateParams { get; set; }
}
Co chciałbym osiągnąć to, że coś się ten
public class LocalizationMap : EntityTypeConfiguration<Localization>
{
public LocalizationMap()
{
Property(e => e.EnglishLabel).HasColumnName("en");
Property(e => e.FrenchLabel).HasColumnName("fr");
}
}
public class AccountMap : EntityTypeConfiguration<Account>
{
public AccountMap()
{
HasKey(x => x.ID);
Property(e => e.Name).HasColumnName("Name");
HasSubMapping(new LocalizationMap());
HasSubMapping(new DateParamsMap());
ToTable("Account");
}
}
Mógłbym użyć dziedziczenia, aby rozwiązać ten problem, ale C# nie pozwala na wielokrotne dziedziczenie.
Może powinieneś rzucić okiem na Entity Framework typów złożonych np tutaj: http://stackoverflow.com/questions/9931341/entity-framework-reuse-complex-type – ChriPf
@ChrifP, może zamieścić swój komentarz jako asnwser, abym mógł go zaakceptować? Podszedłem do rozwiązania typu complextype. – Akli