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,因为我有两个属性我正在用于加入。
答案 0 :(得分:0)
好的,我明白了,你可以使用一个独立的查询。
我使用了以下内容:
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();
其中生成的查询与内部联接的作用相同。
如果您有任何“更好”的选择,请随时分享。