Присоединиться к вложенному запросу NHibernate - PullRequest
3 голосов
/ 29 июня 2011

Как выполнить этот запрос в NHibernate, с критериями или QueryOver?

select r.relationshipidentifier, r.publicrelationshipid
from relationship r 
inner join (
    select max(asofdate) as asofdate, s.relationshipidentifier
    from relationship s
    group by s.relationshipidentifier
) m
on r.asofdate = m.asofdate and r.relationshipidentifier = m.relationshipidentifier

Предположим,

public class Relationship {
    public virtual Guid Id { get; set; }
    public virtual DateTime AsOfDate { get; set; }
    public virtual Guid RelationshipIdentifier { get; set; }
    public virtual Guid PublicRelationshpId { get; set; }
}

1 Ответ

0 голосов
/ 29 июня 2011

внутреннее соединение может быть описано подзапросом.
что-то с эффектом -

QueryOver.Of<Relationship>()
.SelectList(list =>
    list.SelectMax(r => r.AsOfDate),
    list.GroupProperty(r=> r.RelationshipIdentifier)
)

, и вы можете использовать метод QueryOver WithSubquery для внутреннего соединения с этим подзапросом.Подробнее об API QueryOver см. в этой статье .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...