NHibernate.Linq - Насколько хорошо это работает? - PullRequest
9 голосов
/ 25 марта 2011

мы начинаем новый проект с использованием NHibernate и рассматриваем возможность использования NHibernate.Linq (встроенная версия 3.0, а не проект contrib). Я знаю, что это относительно недавнее дополнение. Кто-нибудь пользовался текущей версией LINQ для NHibernate? Достаточно ли он зрел для реальных приложений?

В частности, вы сталкивались с трудными ошибками, какова производительность, и есть ли серьезные пробелы в поддержке, которые вызывали у вас проблемы?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 26 марта 2011

Я широко использовал NHibernate LINQ в своем текущем проекте, и у меня есть некоторые смешанные чувства по этому поводу:

Используя прежнее LINQ в проекте NH Contrib в NH2.1, я могу вам сказать, чтоэта новая версия намного более зрелая и подходит для большинства реальных сценариев.Но, как только вы начинаете выполнять более сложные запросы и / или вам нужно быть особенно внимательным с производительностью, начинают появляться некоторые препятствия.В ней все еще есть некоторые ошибки, и вы увидите много печально известного «Метод не реализован».Независимо от этого, он не зависит от ORM и позволяет разделить проблемы, и вы сможете использовать свои знания LINQ.Это работает довольно хорошо ...

Итак, мое предположение таково: ИМХО, оно готово для реальных приложений, но не ожидайте, что это будет серебряная пуля, которая решит все проблемы, и будьте готовыиспользовать QueryOver / Criteria / HQL в некоторых (или многих) местах.

Несколько замечаний по функциям, которые работают не очень хорошо (из моего опыта):

  • the "Любой «метод»
  • метод «Выборки»
  • кэш второго уровня
  • фьючерсы
  • пространственные расширения
8 голосов
/ 26 марта 2011

NHibernate Linq - многообещающая функция с большим потенциалом.К сожалению, я уже сталкивался с несколькими ситуациями, когда запрос в Linq не работал, и мне пришлось использовать QueryOver (еще одно очень хорошее дополнение).

Достаточно ли он зрел для реальных приложений?Да, если вы не ограничиваетесь только использованием Linq и ничего другого (HQL, ICriteria, QueryOver или даже чистый SQL).

Вот хороший, краткий список примеров , сравнивающих различные API.

Вопрос возник в несколько иной форме: Компромиссы с использованием поставщика NHibernate 3.0 QueryOver или LINQ

Я использую его в сочетании с WCF RIA Services, гдевозвращаемые типы для методов IQueryable.

...