0

在 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,因为我有两个用于加入的属性。

4

1 回答 1

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();

这会生成一个与内部连接相同的查询。

如果您有任何“更好”的选择,请随时分享。

于 2013-01-08T11:02:39.273 回答