2011-01-12 56 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作为基类。