Meine Domänenentitäten haben jeweils einen Satz "fester" Eigenschaften und einen Satz "dynamischer" Eigenschaften, die zur Laufzeit hinzugefügt werden können. Ich verwende dazu die dynamische Komponentenfunktion von NHibernate.
public class Product {
public virtual Guid Id { get; }
public virtual string Name { get; set;}
public virtual IDictionary DynamicComponents { get; }
}
Jetzt habe ich die folgende Situation
public class Customer {
public virtual Guid Id { get; }
public virtual string Type { get; set;}
public virtual IDictionary DynamicProperties { get; }
}
Wobei ein CustomerType etwas ist wie "Online" o "InPerson" . Außerdem hat ein Online-Kunde dynamische Eigenschaften "Name" et "IPAdresse" und ein InPerson-Kunde hat dynamische Eigenschaften "Name" et "Geschäftsmann" .
Welche Kundentypen verfügbar sind und welche zusätzlichen Eigenschaften sie haben, wird in den Metadaten konfiguriert, die beim Start der Anwendung zur Erzeugung von hbm-Dateien verwendet werden.
Ich könnte einen Weg finden, dies mit einer DTO-Zwischenschicht zusammenzufügen, aber gibt es in NHibernate irgendeine Unterstützung für dieses Szenario? Die einzige Schwierigkeit scheint zu sein, dass alle verschiedenen "Typen" von Kunden auf dieselbe Kundenklasse abgebildet werden.