NHibernate: come posso combinare campi di due classi?
-
05-07-2019 - |
Domanda
Ecco una versione semplificata del mio modello di database. Ho due tabelle: " Immagine " ;, & " HostingProvider " che assomigliano a questo:
[Immagine]
- id
- filename
- hostingprovider_id
[HostingProvider]
- id
- base_url
Image HostingproviderId è una relazione di chiave esterna molti-a-uno con la tabella HostingProvider. (Ogni immagine ha un provider di hosting).
In sostanza voglio essere in grado di far apparire la mia classe Image in questo modo:
[Immagine]
- Id
- base_url
- filename
In NHibernate, come posso creare un file di mappatura che combinerà base_url dalla tabella HostingProvider, nella classe Image?
Soluzione
Quello che stai cercando è questo:
http: // ayende .com / Blog / archive / 2007/04/24 / multi-tavolo-Enti-in-NHibernate.aspx
Ecco una sbirciatina di come appare:
<class name="Person">
<id name="Id" column="person_id" unsaved-value="0">
<generator class="native"/>
</id>
<property name="Name"/>
<property name="Sex"/>
<join table="address">
<key column="address_id"/>
<property name="Address"/>
<property name="Zip"/>
<property name="Country"/>
<property name="HomePhone"/>
<property name="BusinessPhone"/>
</join>
</class>
Altri suggerimenti
public class Image {
public virtual HostingProvider HostingProvider { get; set; } // NHibernate takes care of this
public virtual string BaseUrl { get { return HostingProvider.BaseUrl; } }
}