NHibernate 3.0 и LINQ: чего мне не хватает? - PullRequest
2 голосов
/ 29 января 2011

Я недавно решил обновить свое веб-приложение с NHibernate 2.1 до 3.0, последней версии NH.Я также решил обновить .NET 2.0 до 3.5 для лучшей совместимости с Mono (веб-приложение работает только в Linux) теперь, когда оно достаточно развито.

Я хотел немного поиграть с LINQ и NHibernate, так как я такжеувидел, что пространство имен NHibernate.Linq включено в выпуск.

Однако, когда я пытаюсь написать LINQ, используя экземпляр ISession, я не получаю метод Linq<T>.

Я прочитал много старых сообщений в блоге о том, что для использования LINQ to NH необходимо использовать пакет NHContrib.

У меня вопрос

Нужно ли мне ещескачать NHContrib?Версия 3.0 NH намного новее, чем LINQ to NH от NHContrib, и я видел пространство имен Linq, включенное в выпуск

Или

из-за обновления Visual Studio 2010 с 2.0-> Обновление фреймворка 3.5?Я дважды проверил и нацелился на IS 3.5.

К сожалению, я не могу найти исчерпывающую документацию по NH 3.0, кроме полной документации класса, которая более полезна для разработчиков NH, чем универсальная разработка

Спасибо.

Ответы [ 2 ]

7 голосов
/ 29 января 2011

NHibernate 3.0 имеет собственный встроенный LINQ-провайдерb, доступ к которому можно получить через .Query

Так что вам больше не нужен провайдер Ayende NHibernate.Linq.

Также вам может помочь поваренная книга NHibernate 3.0.

https://www.packtpub.com/nhibernate-3-0-cookbook/book

0 голосов
/ 29 января 2011

Также следует помнить, что встроенный поставщик LINQ не поддерживает метод .Equals в предложениях Where, вместо него необходимо использовать ==. Например, когда для работы с NHibernate.Linq в 2x использовалось следующее:

(from e in myEntities where e.Name.Equals(nameLookup) select e)

Теперь вам нужно сделать

(from e in myEntities where e.Name == nameLookup select e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...