nhiberntelinqでnhibernateToFutureクエリを使用する方法

2011年03月30日に質問されました。  ·  閲覧回数 3.7k回  ·  ソース

ryudice picture
2011年03月30日

ToFutureはnhibernatelinqで動作しますか? もしそうなら、あなたはそれをどのように使用しますか?

回答

verbedr picture
2011年12月02日
4

ToFutureは、データベースドライバーがMulitpleQueriesをサポートしている場合にのみ機能することに注意してください。 これは、一部のドライバー(MySql、SqlServerなど)にのみ当てはまりますが、すべて(Oracleなど)には当てはまりません。

Ryan Hauert picture
2011年04月30日
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つの先物を作成できることに注意してください。 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());