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