Domanda

Sono abbastanza nuovo su NHibernate e anche se sto trovando tonnellate di informazioni sulla mappatura di NHibernate sul web, sono troppo sciocco per trovare questa informazione.

Quindi il problema è che ho il seguente modello:

Datamodel

ecco come mi piacerebbe apparire. Una persona pulita con due proprietà dell'indirizzo.

Nel database vorrei persistere in una tabella. Quindi la riga Persona avrebbe un nome di spedizione e una colonna di nome di strada, uno associato a ShippingAddress.Streetname e l'altro a Address.StreetName

Ho trovato un articolo su interfacce fluide , ma non ho ancora capito come farlo attraverso la configurazione XML.

Grazie in anticipo!

Aggiornamento: ho trovato la soluzione da solo. Questo può essere fatto attraverso il nodo e funziona in modo piuttosto semplice.

Per ottenere la mappatura di Address e ShippingAddress ho dovuto solo aggiungere quanto segue a

<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>
È stato utile?

Soluzione

Ok. Ho trovato la soluzione da solo. La chiave è il costrutto nella configurazione XML e funziona piuttosto bene.

Ecco come è fatto:

<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>

Altri suggerimenti

potresti configurarlo come due relazioni. per es.

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

Non hai nemmeno bisogno di un ID per un indirizzo. Basti pensare a quanto costa mantenere un ID. Hai problemi di concorrenza, hai bisogno di unicità e così via. Questo è l'obiettivo di ValueObjects (non confondersi con System.ValueObject, vedere la definizione DDD per ValueObject). In questo caso Address è un oggetto ValueOb quindi non richiede un ID. E se hai bisogno di una raccolta di indirizzi, mappala come un " " vedi http://www.nhforge.org/doc/nh/ it / index.html # Raccolte ofvalues ??.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top