我有兩個實體,它們分別表示Customer和Order,它們獨立存在並且沒有在映射文件中定義的關係。Nhibernate表之間的ICreteria關係
現在我想NHibernate的給我下面的查詢結果:
select customer.id,customer.name from customer,order
where customer.id = order.id
and order.status = "Open"
我試圖用投影,但檢查輸出SQL我看到NHibernate的時候產生一個子查詢這不是我的本意(和性能較差嗎?)
public IList<Customer> GetOpenOrders()
{
DetachedCriteria orders = DetachedCriteria.For<Order>("orders")
.SetProjection(Projections.Property("orders.id"));
ICriteria cret = session.CreateCriteria(typeof(Customer))
.Add(Subqueries.PropertyIn("id", orders))
.Add(Expression.Eq("Status", "open"));
return cret.List<Customer>();
}
是否有可能使用標準來做到這一點,或者有沒有更好的方法來完成這種查詢?