2010-03-16 2 views
3

Может кто-нибудь мне ответить, каковы различияNHibernate Linq Provider вопрос

Session.Query
Session.Linq и
Session.QueryOver

То, что я на самом деле интересно:
Что бы поддерживаться в будущих версиях.
Что мне следует использовать в чистом проекте.

Пожалуйста скажите мне ваши мысли по поводу этих трех ...

Спасибо, Золтан

ответ

5

Session.Query класс, чтобы использовать, когда вы хотите использовать новый и значительно улучшенный поставщика Linq в NHibernate 3.0 , Если вы используете linq, и вы запускаете новый проект, это класс для использования.

Session.Linq - это класс, который следует использовать, если вы используете старый поставщик linq. Я бы сказал, что вы будете использовать этот класс только с более ранними базами кода. Более старый провайдер linq действительно является оберткой API-интерфейсов Criteria и, хотя и подходит для более простых запросов, он, как известно, имеет ограничения, когда вещи становятся более требовательными.

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

На данный момент я бы сказал, что вы хотите использовать интерфейсы Query и QueryOver.

Смежные вопросы