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 を再利用して 2 つの 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());
于 2011-04-29T21:22:02.940 に答える