sql-server - 将其他 LINQ 表达式添加到 ServiceStack.OrmLite 中的 SELECT 查询
问题描述
我在 Blazor WebAssembly 应用程序中使用 Telerik Blazor Grid 组件,并希望能够使用Telerik.DataSource.DataSourceRequest
封装了所有网格状态的对象(例如,当前应用的列过滤器、排序和页码等)。
它们有一个扩展方法.ToDataSourceResult(dataSourceRequest)
,可以与,和..ToDataSourceResultAsync(dataSourceRequest)
之类的集合一起使用。您可以使用来自其他服务(例如实体框架)的集合来执行优化查询 - Telerik 方法在内部使用 LINQ 表达式,以便框架可以以最有效的方式解析它们。List<T>
IEnumerable<T>
IQueryable<T>
IQueryable
我有这个示例代码:
DataSourceResult processedData = null;
using (var db = _dbConnectionFactory.Open())
{
Telerik.DataSource.DataSourceRequest gridRequest = dataSourceRequestWrapper.ToDataSourceRequest();
var q = db.From<PersonTable>()
.Skip(0)
.Take(1000);
processedData = await db.Select(q).AsQueryable().ToDataSourceResultAsync(gridRequest);
db.Close();
}
return processedData;
似乎db.Select(q)
将数据库中的数据具体化,然后.ToDataSourceResultAsync(gridRequest)
在内存中应用扩展方法中的 LINQ 表达式,而不是获取 ServiceStack.OrmLite 框架来生成完整的 SQL 查询,包括来自网格状态对象WHERE
的ORDER BY
子句。
是否有可能让 ServiceStack.OrmLite 表现得更像实体框架,它使用其扩展方法中的 LINQ 查询IQueryable
来生成成功的 SQL 查询。
请参阅我在 Telerik Blazor Grid 论坛上写的相关帖子:https ://www.telerik.com/forums/can-datasourcerequest-be-used-in-sql-query-to-add-where-and-order-by-条款
解决方案
推荐阅读
- cluster-analysis - 导丝聚类
- python - ARIMA 异常预测
- python - 来自numpy的weibull函数问题,概率结果大于1
- python - 一个工作片段不能再抓取它过去的数据
- maxscript - Maxscript中按钮上的字母下划线
- powershell - Powershell 脚本一直以“试运行”的方式运行,并且没有进行任何更改
- node.js - TypeError:'instanceof' 的右侧不可调用 JEST 和 SUPERTEST
- delphi - Delphi - DBGrid - 动态添加组合查找字段
- firebase - SwiftUI:Firebase 库未反映
- git - 本地 git 存储库路径的 git 命令