Что я хотел бы сделать:
1. Создайте произвольный запрос LINQ на основе выбранных пользователем критериев, который будет
2. Запрос к прокси-коллекции (фасаду), которая
3. Преобразует запрос в NHibernate DetachedCriteria
и сериализует ИЛИ просто сериализует выражение LINQ, а затем
4. Отправляет сериализованный запрос на сервер через WCF, где
5. Реализация сервиса выполняет запрос к прокси NHibernate, который
6. Выполните SQL-запрос к базе данных, который
7. Возвращает результат запроса, затем
8. NHibernate превращает результаты в коллекцию POCO, которая
9. WCF сериализуется, а затем
10. Возвращается в прокси коллекцию (фасад), которая окончательно
11. Возвращает результаты в код клиента.
Это кажется сумасшедшим количеством шагов, но требуется, чтобы клиент общался с сервером только через WCF.
Полагаю, первая часть этого вопроса звучит так: «Я делаю что-то глупое, что легче решить с помощью другой архитектуры, учитывая, что клиент не может получить доступ к базе данных напрямую?»
Вторая часть вопроса заключается в том, будет ли у меня меньше головной боли при попытке сериализации запросов как DetachedCriteria
, или я смогу использовать один из доступных сериализаторов дерева выражений для сериализации запросов LINQ to NHibernate.
Я не хочу написать HQL или T-SQL в коде.