2011-01-25 55 views
0

我有2個表格,計劃和票務。我想要所有TravelPlan中的記錄,但不是Ticket中的記錄。幫助NHibernate查詢

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

上面的查詢犯規返回任何記錄..

回答

1

我無法猜測SearchTemplate做什麼,而是你所申請的投射到外部標準,而不是分離的一個。

此外,「根」標準應爲TravelPlan,而不是Ticket。

換句話說:

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

這是假定TravelPlan有UserID屬性,是在票務的UID屬性相匹配。