帮助NHibernate查询

时间:2011-01-25 20:06:33

标签: nhibernate nhibernate-criteria nhibernate-projections

我有两张桌子,Plan和Ticket。我想要TravelPlan中的所有记录,但不是Ticket中的记录。

    Template.Criteria.CreateCriteria("Plan")
              .Add(Subqueries.PropertyNotIn("UserID",
                                            DetachedCriteria.For(typeof(Ticket))
              .SetProjection(Projections.Property("UID")))); 

以上查询不会返回任何记录..

1 个答案:

答案 0 :(得分:1)

我无法猜测SearchTemplate的作用,但您将投影应用于外部标准而不是分离标准。

此外,“root”标准应该是TravelPlan,而不是Ticket。

换句话说:

criteria = DetachedCriteria.For<TravelPlan>()
               .Add(Subqueries.PropertyNotIn(
                        "UserId",
                        DetachedCriteria.For<Ticket>()
                            .SetProjection(Projections.Property("UID"))))

这假设TravelPlan的UserID属性与Ticket中的UID属性匹配。