Seb*_*eth 3 ormlite-servicestack
我正在 ServiceStack 的 OrmLite 中编写分页查询,选择页面范围内的总记录和记录 id。假设query某个任意 SqlExpression 选择一堆记录:
var idQuery = query.SelectDistinct(r => r.Id);
var ids = Db.Column<int>(idQuery.Skip(request.Skip).Take(request.Take));
var total = Db.Count(idQuery);
Run Code Online (Sandbox Code Playgroud)
OrmLite 生成两个查询,其中一个针对 ids:
SELECT DISTINCT ...
Run Code Online (Sandbox Code Playgroud)
总数为一:
SELECT COUNT(*)
Run Code Online (Sandbox Code Playgroud)
我正在尝试让 OrmLite 生成SELECT COUNT(DISTINCT Id)总查询,或执行等效操作。这可能吗?
在以前版本的 OrmLite 中,您需要使用自定义 SQL:
var count = db.Scalar<long>(idQuery.Select("COUNT(DISTINCT Id)"));
Run Code Online (Sandbox Code Playgroud)
我刚刚在此提交中添加了对 Sql.CountDistinct 的支持,这将允许您使用类型化 API:
var count = db.Scalar<long>(idQuery.Select(x => Sql.CountDistinct(x.Id)));
Run Code Online (Sandbox Code Playgroud)
此更改从 v4.0.61 开始提供,现已在 MyGet 上提供。
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |