Penso che questo sia possibile in nibire, ma la mia domanda riguarda Entity Framework.Entity Framework: mappare più classi a una tabella
Nel mio modello di database, che non posso modificare, ho colonne ridondanti che vorrei memorizzare in classi diverse.
Esempio:
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
}
E poi io li uso in alcuni dei miei modelli:
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; }
}
Quello che vorrei ottenere è avere qualcosa di simile
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");
}
}
Potrei usare l'ereditarietà per risolvere questo problema, ma C# non consente l'ereditarietà multipla.
Forse si dovrebbe dare un'occhiata a Entity Framework tipi complessi per esempio qui: http://stackoverflow.com/questions/9931341/entity-framework-reuse-complex-type – ChriPf
@ChrifP, potresti postare il tuo commento come asnwser in modo che io possa accettarlo? Sono passato alla soluzione di tipo complesso. – Akli