J’ai besoin de savoir quelle est la différence entre JoinQueryOver et JoinAlias et comment utiliser chacune ?
Merci.
J’ai besoin de savoir quelle est la différence entre JoinQueryOver et JoinAlias et comment utiliser chacune ?
Merci.
Fonctionnellement, ils font la même chose, créer une jointure à une autre entité. La seule différence est qu'ils reviennent. JoinQueryOver retourne une nouvelle QueryOver avec l'actuelle entité l'entité rejoint, tandis que JoinAlias renvoie l'original QueryOver qu'a l'entité actuelle comme l'origine de la racine de l'entité.
Quel que soit celui que vous utilisez est une question de goût personnel: (à partir de http://nhforge.org/doc/nh/en/index.html#queryqueryover)
IQueryOver<Cat,Kitten> catQuery =
session.QueryOver<Cat>()
.JoinQueryOver<Kitten>(c => c.Kittens)
.Where(k => k.Name == "Tiddles");
et
IQueryOver<Cat,Cat> catQuery =
session.QueryOver<Cat>(() => catAlias)
.JoinAlias(() => catAlias.Kittens, () => kittenAlias)
.Where(() => kittenAlias.Name == "Tiddles");
Le fonctionnement est le même. Notez comment les kittenAlias est expressément fait référence dans la deuxième requête.
QueryOver Série - Partie 2: notions de base et de Rejoindre par Andrew Whitaker donne une très bonne explication:
Résumé:
IQueryOver
est un type générique avec deux paramètres de typeTRoot
etTSubType
.Select
fonctionne surTRoot
, tandis que les autres QueryOver méthodes fonctionnent surTSubType
.TRoot
reste la même que vous êtes en train de construire une requête, maisTSubType
changements lorsque vous vous joignez à l'aide d'JoinQueryOver
JoinQueryOver
etJoinAlias
ajouter se joint à votre requête.JoinAlias
ne change pasTSubType
, maisJoinQueryOver
.- Vous pouvez utiliser des alias lors de la construction d'une requête pour faire référence aux propriétés qui n'appartiennent pas à l'
TRoot
ouTSubType
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.