Взгляните на сервисы WCF Ria: он предоставляет сервис WCF Rest, который поддерживает фильтрацию, сортировку, разбиение на страницы и группировку LINQ.
На стороне сервера DomainService создаст запрос LINQ с «Где», «Заказ *», «Взять», «Пропустить» ...
Избегать ссылок на NH - отличная идея, реализовать свой собственный IQueryable, связать его с NHibernate (возможно, вы захотите использовать движок IoC для этого) и вернуть его в открытых запросах! Вы почти закончили, большинство вызовов LINQ2NH являются стандартным методом расширений LINQ, вам придется написать что-то еще, если вам нужно использовать метод расширения для извлечения (Fetch *) или другие симпатичные NHibernate-вещицы.
Что касается клиента, WCF Ria изначально предназначен для SL, но поддерживает все , у них даже есть клиент JS под названием RIA / JS