J'ai défini une entité appelée Variable et classes dérivées à l'aide de Table par hiérarchie (TPH). La classe de base « Variable » contient une collection de PropertyValues:EF4 CTP5 Comment? Mapper une propriété héritée à un champ d'une table associée
private ICollection<PropertyValue> propertyValues;
public const string DiscriminatorColumn = "Discriminator";
public const string Table = "Variables";
public VariableType VariableType { get; set; }
public string Name { get; set; }
[NotMapped]
public string Discriminator { get; set; }
public virtual ICollection<PropertyValue> PropertyValues
{
get { return this.propertyValues ?? (this.propertyValues = new ObservableCollection<PropertyValue>()); }
set { SetProperty(ref this.propertyValues, value,() => PropertyValues); }
}
Maintenant, je veux dériver une classe SpecialVariable (ou plusieurs), qui définissent des SpecialProperties (par exemple HighLimit) qui devrait être mis en correspondance avec une entrée dans les PropertyValues (table).
public class MySpecialVariabe : Variable
{
public double HighLimit { get; set; }
}
Ma fonction OnModelCreating ressemble actuellement à ceci:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Variable>().HasKey(x => new { x.Id });
modelBuilder.Entity<Variable>()
.Map<MySpecialVariabe>(m => m.Requires(Variable.DiscriminatorColumn).HasValue(typeof(MySpecialVariabe).Name))
.Map<MySpecialVariabe2>(m => m.Requires(Variable.DiscriminatorColumn).HasValue(typeof(MySpecialVariabe2).Name)).ToTable(Variable.Table);
}
que quelqu'un peut me donner quelques conseils sur la manière de réaliser cela, sans écrire des tonnes de mauvais code de la recherche dans la classe dérivée. (La performance est pas important.)
meilleures salutations,
Chris
Salut Ladislav, ta réponse était ce à quoi je m'attendais et à quoi je pensais aussi, mais l'espoir meurt en dernier. Ce que je n'aime pas sur cette approche, c'est qu'il y a tellement de code pour chaque propriété. merci et meilleures salutations, chris – ChrisTTian667