У меня есть клиентское приложение, которое подключается к серверу.Сервер использует Hibernate для сохранения и запросов, поэтому у него есть набор аннотированных объектов Hibernate для сохранения.
Клиент отправляет запросы HQL на сервер и получает ответы обратно.У клиента есть автоматически сгенерированный набор объектов, которые соответствуют объектам гибернации сервера для результатов запроса и базовой персистенции.
Я хотел бы поддержать использование Linq для запросов, а также Hql, поскольку это делает запросы более безопасными и быстрымипостроить (больше нет опечаток в строковых запросах HQL).Я посмотрел вокруг на следующее, но не могу понять, как заставить их соответствовать тому, что у меня есть.
- Провайдер Linq от NHibernate - требует использования NHibernate ISession и ISessionFactory, чего я не делаюиметь
- LinqExtender - требует много аннотаций на объектах и расширение базового типа, слишком инвазивных
То, что я действительно хочу, это то, что будет генерировать, дает мне очень легко обрабатыватьструктура для построения запросов HQL.Я прочитал большую часть 15-страничной статьи, написанной одним из разработчиков C #, о том, как создавать собственные провайдеры, и это довольно чревато, в основном из-за сложности дерева выражений.
Может кто-нибудь предложить подход дляреализовать перевод Linq -> HQL?Возможно, библиотека, которая превратит дерево выражений во что-то более SQL / HQLish.
Я бы хотел поддержать выбор / из / где / группировать / упорядочить по / объединяет.Не слишком беспокоюсь о подзапросах.