7

ToFuture 是否适用于 nhibernate linq?如果是这样,你如何使用它?

4

2 回答 2

5

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

于 2011-12-02T10:53:06.263 回答
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 来创建两个期货。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());
于 2011-04-29T21:22:02.940 回答