2011-01-12 60 views
4

讓我查詢自包含的,可重複使用的可能,我傾向於這樣做在NH2:NHibernate的可重複使用的QueryOver

public class FeaturedCarFinder : DetachedCriteria 
{ 
    public FeaturedCarFinder(int maxResults) : base(typeof(Car)) 
    { 
     Add(Restrictions.Eq("IsFeatured", true)); 
     SetMaxResults(maxResults); 
     SetProjection(BuildProjections()); 
     SetResultTransformer(typeof(CarViewModelMessage)); 
    } 
} 

我現在想用QueryOver,我已經搬到了NH3,但我不知道如何使用QueryOver來完成上述操作?

回答

6

有人在NH用戶列表上給我的答案:

public class FeaturedCarFinder : QueryOver<Car, Car> 
{ 
    public FeaturedCarFinder(int maxResults) 
    { 
     Where(c => c.IsFeatured); 
     Take(maxResults); 
     BuildProjections(); 
     TransformUsing(Transformers.AliasToBean(typeof(CarViewModelMessage))); 
    } 
    private void BuildProjections() 
    { 
     SelectList(l => 
      l.Select(c => c.IsFeatured) 
      //... 
      ); 
    } 
} 

非常類似於使用的DetachedCriteria作爲基類,但要注意使用QueryOver(即兩個類型參數版本),而不是隻QueryOver作爲基類。