Comment faire pour joindre la table dans nhibernate fluent
comment faisons-nous cette cartographie mais couramment?
<class name="Person" table="People">
<id name="Id">
<generator class="identity"/>
</id>
<property name="Name" />
<join table="Addresses">
<key column="PersonId"/>
<property name="Line1"/>
<property name="Line2"/>
<property name="City"/>
<property name="Country"/>
<property name="ZipCode"/>
</join>
</class>
Je sais que je peux utiliser 'Références', mais je n'ai pas besoin de toutes les colonnes de la table liée. j'ai juste besoin d'une propriété.
Vous devez vous connecter pour publier un commentaire.
Ce que Paco a dit n'est pas juste. Cela peut être fait dans NHibernate Fluent.
J'ai cherché sur le web moi-même un bon moment, ne pouvait pas trouver quelqu'un de parler de cette option, alors j'ai juste joué un peu avec FNHibernate un peu et finalement réussi à le faire.
C'était mon scénario :
J'ai deux tables -
Il s'agissait de mes entités :
J'ai un couple de méthodes dans ma requête qui renvoie une liste de
FormStructure
objets. Je voulais que ces méthodes de me donner leur commandés par leDisplayOrder
champ dans laFormField
objet, et je voulais leDisplayOrder
disponibles en tant que propriété de monFormStructure
objet pour d'autres raisons.Cela signifie fondamentalement que j'avais besoin de rejoindre les tables de sorte que je voudrais récupérer toutes les colonnes de la FormStructure table avec le
DisplayOrder
colonne à partir de laFormField
table, se joindre à eux sur la mise en correspondanceFieldId
colonnes.Ce que j'ai fait pour résoudre ce problème :
J'ai ajouté une propriété appelée DisplayOrder à mon
FormStructure
objet.J'ai ajouté le
Join
méthode à monFormStructure
mappage de classe de sorte qu'il ressemblait à ça.La
Join
méthode sera bien évidemment jointure entre les deux tables sur la colonne que vous avez défini dans le KeyColumn méthode au sein de la Jointure.Cela va également supprimer certaines des lignes qui ont des valeurs null. Afin d'éviter cela (je suis tombé sur cette récemment), vous pouvez ajouter
m.Optional();
à l'intérieur de laJoin
méthode.Je peux maintenant récupérer une liste de
FormStructure
objets, commander enDisplayOrder
et ont mêmeDisplayOrder
disponibles en tant que propriété de laFormStructure
objet.Ce n'aurait pas été fait avant, parce que cela ne l'aurait pas reconnu la
DisplayOrder
colonne dans la clause Order j'ai.Autant que je sache, ce n'est pas pris en charge dans NHibernate Fluent, comme beaucoup d'autres-l'héritage-la base de données de mappage spécifique. Je crains que vous devez revenir à l'hbm.xml ou mélanger couramment correspondances avec hbm.xml