Можно ли вызвать IQuerable.ToFuture () и IQuerable.Fetch () в одном запросе для NHibernate (> 3.0) Linq? - PullRequest
3 голосов
/ 07 апреля 2011

Я хочу использовать LINQ to NHibernate для классического сценария подсчета / разбивки на страницы:

var query = Session.Query<Entity>().Where(...);
var count = query.ToFutureValue(c => c.Count());
var results = query.OrderBy(x => x.Field)
                            .Skip(20)
                            .Take(10)
                            .Fetch(x => x.Related1)
                            .Fetch(x => x.Related2)
                            .ToFuture();

Базовая реализация ToFutureValue () не принимает параметр выражения, однако это очень просто реализовать (объяснил в этом блоге ).Последний запрос завершается неудачно с NotSupportedException («Вы также можете использовать метод AsFuture () для NhQueryable») при вызове метода .ToFuture ().Кажется, проблема в том, что метод расширения .Fetch () возвращает NhFetchRequest, а метод расширения .Future () ожидает и NhQuerable.Есть ли обходной путь к этому?

Редактировать: эта ошибка была исправлена ​​в провайдере NHibernate Linq с версии 3.2

1 Ответ

3 голосов
/ 08 апреля 2011

Это ошибка / неподдерживаемый сценарий.Сообщение об ошибке вводит в заблуждение.

Вы можете открыть проблему по адресу https://jira.nhforge.org

Проблема связана с получением;это не относится к части FutureValue.

...