Как использовать запрос nhibernate ToFuture с nhibernte linq - PullRequest
7 голосов
/ 30 марта 2011

Работает ли ToFuture с nhibernate linq? Если да, то как ты это используешь?

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

Будьте внимательны ToFuture работает, только если драйвер базы данных поддерживает MulitpleQueries.Это имеет место только в некоторых драйверах (например, MySql, SqlServer), но не во всех (например, Oracle)

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

Да, это так.Вот простой пример:

var blogs = _session.Query<Blog>()
    .Take(30)
    .ToFuture();
var blogCount= _session.Query<Blog>()
    .ToFutureValue(x => x.Count());

Console.WriteLine(blogCount.Value); // DB is queried here.

Вот пример, где я использовал его для формы поиска клиентов, которая отображала результаты поиска по страницам и общее количество результатов поиска.Обратите внимание, что вы можете повторно использовать IQueryable для создания двух будущих.Методы Filter создали IQueryable на основе того, какие поля пользователь ищет.

int resultsPerPage = 50;
var query = _session.Query<CustomerSearch>()
    .FilterById(model)
    .FilterByFirstName(model)
    .FilterByLastName(model)
    .FilterBySocialSecurityNumber(model)    
    .FilterByPrimaryPhoneNumber(model);
var futureResults = query
    .OrderBy(x => x.Id)
    .Skip(model.Page * resultsPerPage)
    .Take(resultsPerPage)
    .ToFuture();
var futureCount = query.ToFutureValue(x => x.Count());
...