2012-03-29 7 views
0

Ich benutze Schlagcode für Join in Nhibernate, die gut funktioniert. Aber ich möchte nicht .List auf beiden Abfragen vor dem Beitritt verwenden, ich möchte .List nach Join verwenden. Ich weiß nicht nhibernate zu viel .. bitte stellen Sie mir Hilfe zur Verfügung, dass, was ich Änderungen in unter Function machen sollte, um zuerst die Daten beizutreten und dann .List darüber anzuwenden.Joins in Nhibernate

public IEnumerable<PGrp> GetSol() 
    { 
     _pGrpR = null; 
     _pGrp = null; 

     QueryOver<Phy, Phy> activePhyQuery = GetDataQuery(); 

     var phyGrpR = _session.QueryOver(() => _pGrpR) 
     .Where(
      Subqueries.WhereProperty<PGrpR>(p => _pGrpR.PhyId).In(
       activePhyQuery)) 
     .List<PGrpR>(); 

     IList<PGrp> pGrps = _session.QueryOver(() => _pGrp) 
      .Where(x => !x.AC) 
      .List<PGrp>(); 

     var newPGrps = pGrps 
      .Join(
       pGrpR, 
       p => p.Id, 
       x => x.PGrpId, 
       (p, x) => p 
      ).Distinct().OrderBy(x => x.Name); 

     return newPGrps; 
    } 

Dank

Antwort

0
PGrpR pGrpR = null; 
IList<PGrp> pGrps = _session.QueryOver(() => _pGrp) 
      .Where(x => !x.AC) 
      .JoinAlias(pgrps => pgrps.pGrpR,() => pGrpR) // Set real property name 
      .OrderBy(() => pGrpR.Name).Asc 
      .Select(Projections.Distinct(Projections.Property(() => pGrpR."PropertyForDistinct"))) 
      .TransformUsing(Transformers.DistinctRootEntity) 
      .List<PGrp>(); 
+0

Fehler in .JoinAlias ​​Linie mit Blick auf –