2011-03-30 8 views
7

के साथ nhibernate ToFuture क्वेरी का उपयोग कैसे करें ToFuture nhibernate linq के साथ काम करता है? यदि हां, तो आप इसका उपयोग कैसे करते हैं?nhibernte linq

उत्तर

3

हां यह करता है। यहाँ एक सरल उदाहरण है:

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 का पुन: उपयोग कर सकते हैं। फ़िल्टर विधियों ने एक 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()); 
4

सावधान डेटाबेस ड्राइवर MulitpleQueries समर्थन करता है तो ToFuture ही काम करता है हो सकता है। यह केवल कुछ ड्राइवरों में मामला है (उदाहरण के लिए MySQL, SqlServer) लेकिन सभी में नहीं (उदाहरण के लिए ओरेकल)