Присоединяется в nhibernate - PullRequest
0 голосов
/ 29 марта 2012

Я использую код удара для соединения в nhibernate, который работает нормально. Но я не хочу использовать .List в обоих запросах до объединения, я хочу использовать .List после объединения. Я не слишком разбираюсь в nhibernate .. Пожалуйста, предоставьте мне помощь, чтобы внести изменения в нижеприведенную функцию, чтобы сначала объединить данные, а затем применить .List к ним.

 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;
    }

Спасибо

1 Ответ

0 голосов
/ 29 марта 2012
 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>();
...