2011-03-30 25 views

cevap

3

Evet öyle. İşte basit bir örnek:

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. 

Burada arama sonuçları belleği ve arama sonuçlarının ve toplam sayım görüntülenen Bir müşteri araması formu için kullandım nerede bir örnek. İki vadeli oluşturmak için bir IQueryable'ı tekrar kullanabileceğinizi unutmayın. Filtre yöntemleri, kullanıcının aradığı alanları temel alarak bir IQueryable oluşturdu.

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

veritabanı sürücüsü MulitpleQueries destekliyorsa ToFuture çalışır dikkatli olun. Bu sadece bazı sürücülerde (örn. MySql, SqlServer) durumdur, ancak hepsi (örn. Oracle)

İlgili konular