Стабилен ли встроенный в Linq провайдер NHibernate 3.0?
Могу ли я зависеть от встроенного в Linq провайдера NHibernate 3.0 для выполнения сложных запросов, содержащих агрегатные функции, такие как Max и Min, и содержащие строковые операции, такие как Contains, StartsWith или EndsWith??
3 ответа
В списке nhusers было много споров, так как осталось еще немало вопросов.
Я бы посмотрел на группу nhusers, прочитал некоторые посты и решил сам. Смотрите здесь для сообщений.
Лично я обнаружил, что queryover
делает все, что мне нужно, поэтому я подожду, пока провайдер Linq не станет более стабильным со временем.
Я бы рекомендовал присоединиться к группе nhusers, чтобы почувствовать себя лучше.
Заметные проблемы, которые я обнаружил, это:
- Метод.OfType() не реализован, что может вызвать проблемы с иерархиями наследования.
- Левые соединения не поддерживаются
- Нетривиальная группировка по операциям не работает (даже такая простая вещь, как сортировка по количеству групп).
- Fetch () должен быть последним методом в запросе, который может затруднить разбиение на страницы со связанными коллекциями.
Тем не менее, это определенно улучшение от поставщика NHContrib.
Перечисленные вами операции прекрасно поддерживаются в обычных сценариях.
Поставщик LINQ гораздо более стабилен и продвинут, чем тот, который написал Ayende. (не отрицаю, что он написал это из-за того, что он написал, что я снова взял NH)
Я думаю, что единственная проблема, с которой я столкнулся с NH Query - это составные типы. Вы можете сделать это в EF/L2S, и NH3, кажется, генерирует правильный sql, но не может его выполнить.
Лично мне нравится QueryOver, мне он читается лучше.