2010-03-16 4 views
3

Quelqu'un peut-il me répondre quelles sont les différences deNHibernate Linq fournisseur question

Session.Query
Session.Linq et
Session.QueryOver

Ce que je suis vraiment intéressé par:
Que serait être pris en charge dans les futures versions.
Que dois-je commencer à utiliser dans un projet propre?

S'il vous plaît dites-moi vos réflexions sur ces trois ...

Merci, Zoltán

Répondre

5

Session.Query est la classe à utiliser lorsque vous voulez utiliser le nouveau fournisseur et beaucoup de LINQ amélioré dans NHibernate 3.0 . Si vous utilisez linq et que vous démarrez un nouveau projet, c'est la classe à utiliser. Session.Linq est la classe à utiliser si vous souhaitez utiliser l'ancien fournisseur linq. Je dirais que vous utiliseriez seulement cette classe avec des bases de code plus anciennes. L'ancien fournisseur de linq est en fait un wrapper autour de l'API Criteria et, bien qu'il soit parfait pour les requêtes plus simples, il est connu d'avoir des limites une fois que les choses deviennent plus exigeantes.

Session.QueryOver est un wrapper autour de l'API Criteria de NHibernate. Si vous êtes déjà familier avec l'API Criteria, il s'agit d'une interface très accessible. Il élimine la plupart des chaînes, les remplaçant par des expressions lambda. C'est une interface très fluide. La syntaxe est linq-like mais c'est pas un fournisseur linq.

À ce stade, je dirais que vous voulez utiliser les interfaces Query et QueryOver.