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