Ich habe ein Legacy-System, das dynamisch eine Tabelle mit zusätzlichen Spalten bei Bedarf erweitert. Jetzt möchte ich diese Tabelle über C#/NHibernate zugreifen.
Es gibt keine Möglichkeit, das Verhalten des Altsystems zu ändern, und ich muss dynamisch mit den Daten in den zusätzlichen Spalten arbeiten. Daher ist das Dynamic-Component-Mapping keine Option, da ich die genauen Namen der zusätzlichen Spalten nicht kenne.Karte unbekannte Anzahl von Spalten zu Wörterbuch
Gibt es eine Möglichkeit, alle nicht zugeordneten Spalten in ein Wörterbuch zu stellen (Spaltenname als Schlüssel)? Oder wenn das keine Option ist, fügen Sie alle Spalten in ein Wörterbuch ein?
Noch einmal, ich kenne die Namen der Spalten zur Kompilierzeit nicht, also muss dies vollständig dynamisch sein.
Beispiel:
public class History
{
public Guid Id { get; set; }
public DateTime SaveDateTime { get; set; }
public string Description { get; set; }
public IDictionary<string, object> AdditionalProperties { get; set; }
}
Also, wenn die Tabelle Geschichte der Spalten Id enthält, SaveDateTime, Beschreibung, A, B, C und D würde ich gerne "A", "B", "C" und "D" im IDictionary haben. Oder wenn das zu schwer ist, werfen Sie einfach alle Spalten hinein.
Für den Anfang wäre ich auch in Ordnung mit nur String-Spalten, wenn das hilft.
Es ist jedoch möglich, dynamisch zu erfassen und Metadaten der Tabelle verarbeiten. Und ändern Sie die Anweisungen entsprechend. Es ist möglich, diese Informationen zu verwenden, um Insert-Anweisungen mit "classic" ado.net zu ändern und/oder dynamisch zu assemblieren. Die Frage ist: Ist dies mit NHibernate möglich? Oder stellt NHibernate eine Art von Automatisierung zur Verfügung? –
Ich glaube nicht, aber ich bin mir nicht sicher. Sie können versuchen, in der Benutzergruppe "nhibernate" http://groups.google.com/group/nhusers nachzufragen – Paco