簡體   English   中英

NHibernate Criteria查詢時間內部聯接

[英]NHibernate Criteria query time inner join

在NHibernate中,是否可以在使用Criteria的查詢期間內連接對象?

我想完成這樣的事情:

SELECT p
FROM Person p
INNER JOIN Section s
    ON   p.sid = s.id 
    AND  p.companyid = s.companyid

聯接不在映射中(並且不能在那里)。 是否有類似以下語法的內容?

var list = session.CreateCriteria(typeof(Person), "p")
.CreateCriteria(typeof(Section), "s")
.Add(Expression.EqProperty("p.SectionId", "s.Id"))
.Add(Expression.EqProperty("p.CompanyId", "s.CompanyId"))
.List();

這是可能嗎? 我不能在這里使用detachedcriteria,因為我有兩個用於連接的屬性。

好的,我知道了,您可以使用detachedquery。

我使用了以下內容:

var list = session.CreateCriteria(typeof(Person), "p")
             .Add(Subqueries.PropertyIn("SectionId", typeof(Section), "s")
                    .SetProjection(Projections.Property("Id"))
                    .Add(Expression.EqProperty("s.Id", "p.SectionId"))
                    .Add(Expression.EqProperty("s.CompanyId", "p.CompanyId"))
                )).List();

生成與內部聯接相同的in查詢。

如果您有“更精細”的選擇,請隨時分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM