2011-06-29 95 views
3

你如何做这个查询在NHibernate,条件或QueryOver加入嵌套查询NHibernate

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

回答

0

内连接可以通过一个子查询进行描述。
东西的效果 -

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

,你可以使用QueryOver的WithSubquery方法内加入到该子查询。 有关QueryOver API的更多详细信息,请参阅this article

+0

但是如何使用WithSubquery进行连接? – FrankF

+0

找不到使用WithSubquery进行连接的任何方法 –