[英]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.