Frage

ich bin ziemlich neu in NHibernate und zwar bin ich zu finden Tonnen von infos auf NHibernate-mapping auf dem Netz, ich bin zu dumm Sie zu finden dieses Stück von Informationen.

Also das problem ist, ich habe das folgende Modell:

Datamodel

dies ist, wie ich mag es, zu schauen.Ein sauberer Mensch, die hat zwei Adresse-Eigenschaften.

In der Datenbank möchte ich beibehalten dieses in einer Tabelle an.Also die Person, die Zeile wäre eine ShippingStreetname und eine Streetname Spalte, die eine zugeordnete zu ShippingAddress.Streetname und anderen Adresse.StreetName

Ich fand eine Artikel über fließend Schnittstellen, aber immer noch nicht herausgefunden, wie man dies durch die XML-Konfiguration.

Vielen Dank im Voraus!

Update:Ich fand die Lösung für das von mir selbst.Dies kann durch den Knoten und wirkt eher einfach.

Zur Erreichung der Zuordnung Adresse und ShippingAddress ich nur hatte, um die folgenden

<component name="Address" class="Address">
  <property name="Streetname"></property>
  <property name="Zip"></property>
  <property name="City"></property>
  <property name="Country"></property>
</component>

<component name="ShippingAddress" class="Address">
  <property name="Streetname" column="ShippingStreetname" />
  <property name="Zip" column="ShippingZip" />
  <property name="City" column="ShippingCity" />
  <property name="Country" column="ShippingCountry" />
</component>
War es hilfreich?

Lösung

Ok. Ich fand die Lösung selbst. Der Schlüssel ist das Konstrukt in der XML-Konfiguration und es funktioniert ziemlich gut.

Hier ist, wie es gemacht wird:

<component name="Address" class="Address">
  <property name="Streetname"></property>
  <property name="Zip"></property>
  <property name="City"></property>
  <property name="Country"></property>
</component>

<component name="ShippingAddress" class="Address">
  <property name="Streetname" column="ShippingStreetname" />
  <property name="Zip" column="ShippingZip" />
  <property name="City" column="ShippingCity" />
  <property name="Country" column="ShippingCountry" />
</component>

Andere Tipps

Sie könnten dies als zwei Beziehungen konfigurieren. z.

<many-to-one name="ShippingAddress" class="Yournamespace.Address"/>
<many-to-one name="Address" class="Yournamespace.Address"/>

Sie nicht sogar brauchen, eine Id für eine Adresse.Denken Sie nur, wie teuer ist die Aufrechterhaltung einer Id.Sie haben concurrency-Probleme, Sie müssen Einzigartigkeit, und so auf.Dies ist das Ziel des ValueObjects (tun nicht verwirren mit System.ValueObject sehen DDD definition für ValueObject).In diesem Fall-Adresse ist ein ValueObject so ist es nicht erforderlich, eine Id.Und wenn Sie eine Sammlung der Adresse, die Sie anzeigen es wie ein "" zu sehen http://www.nhforge.org/doc/nh/en/index.html#collections-ofvalues.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top