ToFuture是否适用于nhibernate linq?如果是这样,你如何使用它?
答案 0 :(得分:4)
注意ToFuture仅在数据库驱动程序支持多个查询时才有效。这只是某些驱动程序(例如MySql,SqlServer)中的情况,但并非全部(例如Oracle)
答案 1 :(得分: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());