Стабилен ли встроенный в Linq провайдер NHibernate 3.0?

Могу ли я зависеть от встроенного в Linq провайдера NHibernate 3.0 для выполнения сложных запросов, содержащих агрегатные функции, такие как Max и Min, и содержащие строковые операции, такие как Contains, StartsWith или EndsWith??

3 ответа

Решение

В списке nhusers было много споров, так как осталось еще немало вопросов.

Я бы посмотрел на группу nhusers, прочитал некоторые посты и решил сам. Смотрите здесь для сообщений.

Лично я обнаружил, что queryover делает все, что мне нужно, поэтому я подожду, пока провайдер Linq не станет более стабильным со временем.

Я бы рекомендовал присоединиться к группе nhusers, чтобы почувствовать себя лучше.

Заметные проблемы, которые я обнаружил, это:

  1. Метод.OfType() не реализован, что может вызвать проблемы с иерархиями наследования.
  2. Левые соединения не поддерживаются
  3. Нетривиальная группировка по операциям не работает (даже такая простая вещь, как сортировка по количеству групп).
  4. Fetch () должен быть последним методом в запросе, который может затруднить разбиение на страницы со связанными коллекциями.

Тем не менее, это определенно улучшение от поставщика NHContrib.

Перечисленные вами операции прекрасно поддерживаются в обычных сценариях.

Поставщик LINQ гораздо более стабилен и продвинут, чем тот, который написал Ayende. (не отрицаю, что он написал это из-за того, что он написал, что я снова взял NH)

Я думаю, что единственная проблема, с которой я столкнулся с NH Query - это составные типы. Вы можете сделать это в EF/L2S, и NH3, кажется, генерирует правильный sql, но не может его выполнить.

Лично мне нравится QueryOver, мне он читается лучше.

Другие вопросы по тегам