NHibernate3 Query vs QueryOver
c#, nhibernate, orm
Solution
`QueryOver` combines extension methods and lambda expressions:
IList<Cat> cats =
session.QueryOver<Cat>()
.Where(c => c.Name == "Max")
.List();
`QueryOver` is a strongly-typed querying technology built on top of NHibernate’s Criteria API.
You can read more info here and here.
As far as I know some features in the linq provider are not implemented yet. I would use `QueryOver`. It allows you to write elegant code and it is fully featured.
Something worth reading.
Problem
I noticed there are two ways to create nice generic friendly access to nhibernate. ``` IQueryOver<T, T> query= session.QueryOver<T>().Where(criteria); ``` and ``` IQueryable<T> query= session.Query<T>().Where(criteria); ``` Implementations of each interface. ``` IQueryOver<TRoot, TSubType> : IQueryOver<TRoot>, IQueryOver ``` and ``` IQueryable<out T> : IEnumerable<T>, IQueryable, IEnumerable ``` IQueryable implements IEnumerable, thus supports all the LINQ friendly things you would expect. I am tending towards this implementation, but was wondering if anyone knew what the purpose of QueryOver was that you cannot accomplish with Query?