如何使用nhibernte linq的nhibernate ToFuture查询

ryu*_*ice 7 linq-to-nhibernate nhibernate-3

ToFuture与nhibernate linq一起使用吗?如果是这样,你如何使用它?

ver*_*edr 5

注意 ToFuture 仅在数据库驱动程序支持 MulitpleQueries 时才有效。这仅适用于某些驱动程序(例如 MySql、SqlServer),但并非全部(例如 Oracle)


Rya*_*ert 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.
Run Code Online (Sandbox Code Playgroud)

下面是我将其用于显示分页搜索结果和搜索结果总数的客户搜索表单的示例。请注意,您可以重用 IQueryable 来创建两个 future。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());
Run Code Online (Sandbox Code Playgroud)