Question

To keep my queries self-contained and potentially reusable, I tended to do this in NH2:

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

I'd like to use QueryOver now that I've moved to NH3, but I'm not sure how to do the above using QueryOver?

Was it helpful?

Solution

Someone on the NH Users list gave me the answer:

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) 
            //... 
            ); 
    } 
} 

Very similar to using DetachedCriteria as a base class, but note the use of QueryOver (i.e. the two type-argument version) rather than just QueryOver as the base class.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top