0

次のクエリをnhibernate基準クエリAPIからlinqに変換したいと思います。

 var userquery = session.CreateCriteria(typeof(User))
          .SetFirstResult(pageIndex * pageSize)
          .SetMaxResults(pageSize);

 var totalcountQuery = CriteriaTransformer.Clone(userquery)
           .SetProjection(Projections.RowCountInt64());

ありがとう

アップデート

IEnumerable<User> dbUsers = userquery.Future<User>();
IFutureValue<long> count = totalcountQuery.FutureValue<long>();
4

1 に答える 1

1

直接(っぽい)翻訳は次のようになります:

var userQuery = session.Query<User>().Skip(pageIndex * pageSize).Take(pageSize);

var totalCount = userQuery.LongCount();

ただし、スキップ&テイクの後にカウントを実行する理由がわかりません。次のように考えます。

var totalCount = session.Query<User>().LongCount(); 

あなたが望むものに近いでしょう

http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Executing-future-queries-with-NHibernate-Linq.aspxを参照してください

Linqの先物については、次のことができます。

var users = userQuery.ToFuture();    
var totalCount = userQuery.LongCount(); // users will be a future, count won't be but if it's only 2 queries then this will execute them both
于 2012-05-25T12:48:03.983 に答える