Come posso mettere in relazione 2 classi tramite NHibernate?
-
03-07-2019 - |
Domanda
Supponiamo che io abbia una classe " Utente " ;, e che " abbia " una proprietà di tipo "Profilo". Come posso configurare i miei mapping per generare lo schema e creare entrambe le tabelle nel database?
Soluzione
<many-to-one/>
Altri suggerimenti
A parte questo, se non sei un grande fan dello scripting su mappe ibernate (cosa che io non sono), allora hai un paio di altre opzioni.
Castle ActiveRecord è un'alternativa: è uno strato sopra NHibernate che ( tra le altre cose) ti consente di dichiarare le tue relazioni usando gli attributi delle tue classi e proprietà.
E Fluent NHibernate è un altro: ti consente di impostare a livello di programmazione le tue lezioni e relazioni.
Entrambi sono un grande miglioramento rispetto alla scrittura manuale del tuo xml di mappatura!
Se stai chiedendo informazioni sul mapping, puoi utilizzare il join come mostrato di seguito. nota: ovviamente devi aggiungere alcuni attributi aggiuntivi per soddisfare la tua app.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="MyNamespace" assembly="MyAssembly" default-lazy="true">
<class name="User" table="User">
<id name="Id" column="user_id" unsaved-value="0">
<generator class="native" />
</id>
<property name="Profile" column="profile" />
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="MyNamespace" assembly="MyAssembly" default-lazy="true">
<class name="Profile" table="Profile">
<id name="Id" column="profile_id" unsaved-value="0">
<generator class="native" />
</id>
<property name="Profile" column="profile" />
</class>
</hibernate-mapping>