Session.Query класс, чтобы использовать, когда вы хотите использовать новый и значительно улучшенный поставщика Linq в NHibernate 3.0 , Если вы используете linq, и вы запускаете новый проект, это класс для использования.
Session.Linq - это класс, который следует использовать, если вы используете старый поставщик linq. Я бы сказал, что вы будете использовать этот класс только с более ранними базами кода. Более старый провайдер linq действительно является оберткой API-интерфейсов Criteria и, хотя и подходит для более простых запросов, он, как известно, имеет ограничения, когда вещи становятся более требовательными.
Session.QueryOver - это оболочка API-интерфейсов критериев NHibernate. Если вы уже хорошо разбираетесь в API критериев, это очень доступный интерфейс. Он устраняет большинство строк, заменяя их лямбда-выражениями. Это очень удобный интерфейс. Синтаксис является linq-подобным, но это не поставщик linq.
На данный момент я бы сказал, что вы хотите использовать интерфейсы Query и QueryOver.