我有两个查询,第一个查询返回top 10/20 recoords,第二个查询返回第一个查询的总记录数。两个查询都需要使用相同的过滤条件。
如何在一个地方编写过滤条件中使用的过滤条件和参数,并在两个查询中使用。
条件我可以存储在字符串变量中并在两个查询中使用但是如何共享参数?
我正在使用HQL
答案 0 :(得分:1)
检查这个类似的Q&答:Nhibernate migrate ICriteria to QueryOver
NHiberante有一个本地支持行数。我们有一些问题
// the QueryOver
var query = session.QueryOver<MyEntity>();
它可能有任何数量的部件,预测......现在我们只是采用其基本标准并使用变压器来创建全新的标准 - 开箱即用以获得总行数
// GET A ROW COUNT query (ICriteria)
var rowCount = CriteriaTransformer.TransformToRowCount(query.UnderlyingCriteria);
下一步是使用FUTURE在DB的往返中获取两个查询
// ask for a list, but with a Future, to combine both in one SQL statement
var list = query
.Future<MyEntity>()
.ToList();
// execute the main and count query at once
var count = rowCount
.FutureValue<int>()
.Value;
// list is now in memory, ready to be used
var list = futureList
.ToList();