NHibernate: Comment puis-je combiner des champs de deux classes?
-
05-07-2019 - |
Question
Voici une version simplifiée de mon modèle de base de données. J'ai deux tables: "Image", et "HostingProvider". qui ressemblent à ceci:
[Image]
- id
- nom de fichier
- hostingprovider_id
[Fournisseur d'hébergement]
- id
- base_url
Image HostingproviderId est une relation de clé étrangère plusieurs-à-un avec la table HostingProvider. (Chaque image a un fournisseur d'hébergement).
En gros, je veux que ma classe Image ressemble à ceci:
[Image]
- ID
- base_url
- nom de fichier
Sous NHibernate, comment puis-je créer un fichier de mappage qui associera l'url base_ de la table HostingProvider à la classe Image?
La solution
Ce que vous cherchez, c'est ceci:
http: // ayende .com / Blog / archive / 2007/04/24 / Multi-Table-Entities-in-NHibernate.aspx
Voici un aperçu de ce à quoi il ressemble:
<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>
Autres conseils
public class Image {
public virtual HostingProvider HostingProvider { get; set; } // NHibernate takes care of this
public virtual string BaseUrl { get { return HostingProvider.BaseUrl; } }
}