91 votes

Quelle est la différence entre JoinQueryOver et JoinAlias ?

J’ai besoin de savoir quelle est la différence entre JoinQueryOver et JoinAlias et comment utiliser chacune ?

Merci.

111voto

Vadim Points 12745

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.

15voto

Michał Powaga Points 8949

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 type TRoot et TSubType
  • .Select fonctionne sur TRoot , tandis que les autres QueryOver méthodes fonctionnent sur TSubType.
  • TRoot reste la même que vous êtes en train de construire une requête, mais TSubType changements lorsque vous vous joignez à l'aide d' JoinQueryOver
  • JoinQueryOver et JoinAlias ajouter se joint à votre requête. JoinAlias ne change pas TSubType, mais JoinQueryOver .
  • 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 ou TSubType

Prograide.com

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.

Powered by:

X