Expression complexe nHibernate QueryOver

J’ai les objects suivants dans une hiérarchie A > B > C > D Chaque object est associé à une table. J’essaie d’écrire le code SQL suivant à l’aide de QueryOver:

 SELECT B FROM A, B, C, D WHERE A.ID = B.ID AND B.ID = C.ID AND C.ID = D.ID WHERE A.NUMBER = 'VALUE' AND D.NAME IN ('VALUE1', 'VALUE2') 

J’ai le code C # jusqu’à présent:

 ssortingng[] entityNames = entityAtsortingbutes.Select(e => e.Name).ToArray(); ssortingng customerNumber = 2; return session.QueryOver() .JoinQueryOver(b => bC) .JoinQueryOver(c => cD) .WhereRessortingctionOn(d => d.Name).IsIn(entityNames) .List(); 

Ce qui manque ici, c’est le lien A > B Je n’arrive pas à comprendre comment append la jointure à A limitant dans le champ NUMBER . J’ai essayé ce qui suit mais le .JoinQueryOver(b => bC) recherche le type A au lieu de rechercher le type B

 return session.QueryOver() .JoinQueryOver(b => bA) .Where(a => a.Number == customerNumber) .JoinQueryOver(b => bC) **//Looks for type A instead of B** .JoinQueryOver(c => cD) .WhereRessortingctionOn(d => d.Name).IsIn(entityNames) .List(); 

Comment puis-je append le type A à cette requête tout en renvoyant le type B ?

vous pouvez utiliser des alias pour rejoindre votre table comme

 B tB = null; A tA = null; C tC = null; D tD = null; var qOver = HibSession.QueryOver(() => tB) .JoinAlias(() => tB.A, () => tA, JoinType.LeftOuterJoin) .Where(() => tA.Number == customerNumber) .JoinAlias(() => tB.C, () => tC, JoinType.LeftOuterJoin) .JoinAlias(() => tC.D, () => tD, JoinType.LeftOuterJoin) .Where(Ressortingctions.On(() => tD.Name).IsIn(entityNames)) .List(); 

J’espère que c’est utile.