Ing. Ernst Greiner Softwareentwicklung

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern
Home NHibernate NHibernate.Mapping.Attributes zweite Component vom selben Typ

 


Mapping einer zweiten Komponente vom selben Typ:

Manchmal benötigt man, obwohl es meistens keine schöne Lösung ist, eine zweite Komponente vom selben Typ einer schon verwendeten Komponente in einer Klasse.

Ein einfaches Beispiel, Rechnungsadresse und Lieferadresse...

Ich habe im Moment nur die eine Lösung gefunden diese zweite Adresse über NHMA.RawXml zu mappen.
Damit für diese zweite Adresse in der DB auch eigene Columns erstellt werden, muss dieses Mapping manuel erstellt werden.

Snippet

[NHMA.ComponentProperty]
public virtual AddressComponent Address { getset; }

/// <summary>
/// RawXml String zum erzeugen des Mappings für die zweite Adresse
/// </summary>
private const string XmlMappingAddress2 = "<component name=\"Address2\">"
        + "<property name=\"City\" type=\"String\" index=\"idxCity2\">"
        + "  <column name=\"City2\" length=\"50\" not-null=\"true\" default=\"('')\" /></property>"
        + "<property name=\"Street\" column=\"Street2\" type=\"String\" length=\"50\" index=\"idxStreet2\"/>"
        + "<property name=\"Zip\" column=\"Zip2\" type=\"String\" length=\"25\" index=\"idxZip2\"/>"
        + "<many-to-one name=\"Country\" column=\"Country2\" />"
        + "</component>";

 [NHMA.RawXml(After = typeof(NHMA.VersionAttribute), Content = XmlMappingAddress2)]
public virtual AddressComponent Address2 { getset; }

Eine weitere Möglichkeit wäre die Benutzung von [NHMA.AttributeIdentifierAttribute], siehe NHibernate Doku.

Ein Beispiel dazu folgt eventuell noch...