NHibernate条件查询时间内部联接
在NHibernate中,是否可以在查询期间使用条件内部连接对象 我想实现以下目标:NHibernate条件查询时间内部联接,nhibernate,inner-join,criteria,Nhibernate,Inner Join,Criteria,在NHibernate中,是否可以在查询期间使用条件内部连接对象 我想实现以下目标: 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(t
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查询
如果你有任何更好的选择,请随时分享