2010-04-28 47 views
0

我想獲取父母的列表,其中子集合不包含特定類型的項目。在LINQ相當於會是這樣的:尋找父母的孩子收集不包含具有特定屬性值的項目

dataset.Where(x => x.Items.FirstOrDefault(y => y.Type.Code == "ABC") == null) 

對象模型是父>子(項目)>類型>代碼

如果父母是我聚合根,我將如何在NHibernate的標準/查詢模型此?這是我的第一次嘗試:

var results = session.CreateCriteria<Parent>() 
    .CreateCriteria("Items") 
    .CreateCriteria("Type") 
    .Add(Restrictions.Not(Restrictions.Eq("Code", "ABC"))) 
    .SetResultTransformer(Transformers.DistinctRootEntity) 
    .List<Parent>(); 

這似乎沒有返回正確的實體 - 它只是返回它們全部。

回答

0

它很容易與HQL做到這一點比標準:

from Parent 
where id not in 
     (select p.Id 
     from Parent p 
     join p.Items item 
     where item.Type.Code = 'ABC') 

你會得到你所期望的結果,而無需DistinctRootEntity。

相關問題