Я заметил, что есть два способа создать хороший общий доступ к nhibernate.
IQueryOver<T, T> query= session.QueryOver<T>().Where(criteria);
и
IQueryable<T> query= session.Query<T>().Where(criteria);
Реализации каждого интерфейса.
IQueryOver<TRoot, TSubType> : IQueryOver<TRoot>, IQueryOver
и
IQueryable<out T> : IEnumerable<T>, IQueryable, IEnumerable
IQueryable реализует IEnumerable, таким образом, поддерживает все удобные для LINQ вещи, которые вы ожидаете. Я стремлюсь к этой реализации, но задавался вопросом, знал ли кто-нибудь, что цель QueryOver заключается в том, что вы не можете выполнить с Query?