2011-03-30 10 views

Respuesta

3

Sí lo hace. Aquí está un ejemplo sencillo:

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. 

He aquí un ejemplo de donde yo he utilizado para un formulario de búsqueda de clientes que visualizan paginado y resultados de búsqueda y un recuento total de los resultados de búsqueda. Observe que puede reutilizar un IQueryable para crear dos futuros. Los métodos de filtro crearon una IQueryable en función de los campos en los que el usuario realizó la búsqueda.

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()); 
4

Ten cuidado ToFuture sólo funciona si el controlador de base de datos soporta MulitpleQueries. Este es solo el caso en algunos controladores (por ejemplo, MySql, SqlServer) pero no en todos (por ejemplo, Oracle)

Cuestiones relacionadas