c# - .NET IQueryable MSSQL 和 ASP.NET WebAPI
问题描述
案件如下。
WPF 应用程序中有 DataGrid,它使用 IQueryable 作为 ItemsSource(应用过滤、排序、分组、聚合等)我们有 MSSQL Server 数据库,如果我们使用 EF DbSet<> 从应用程序直接连接到数据库,则数据存储在其中或 ADO.NET Table<> 一切都很好。我们不希望该应用程序直接访问数据库,目的是在它们之间使用 WebAPI。DataGrid 有自己的查询生成器表达式,生成的查询看起来像
.Call System.Linq.Queryable.Select(
.Call System.Linq.Queryable.GroupBy(
.Call System.Linq.Queryable.Select(
.Constant<Reports.ReportQuery>(Query(RepoService.Flight)),
'(.Lambda #Lambda1<System.Func`2[RepoService.Flight,DynamicClass1]>)),
'(.Lambda #Lambda2<System.Func`2[DynamicClass1,DynamicClass2]>)),
'(.Lambda #Lambda3<System.Func`2[System.Linq.IGrouping`2[DynamicClass2,DynamicClass1],Telerik.Pivot.Core.PivotResultItem]>))
据我了解,OData 不适合我们的情况。我们要做的是在提供者 Execute 方法中创建我们的自定义 IQueryable 和 IQueryProvider 获取查询表达式,以将其发送到 WebAPI,然后在 DB 上执行它,发回结果并从提供者 Execute 方法返回该结果。
1)这种方式正确/可能吗?
2)这种情况有一些现有的解决方案吗?
解决方案
我为我的问题找到了解决方案,它是Remote.LINQ
推荐阅读
- azure - Azure APIM 中的 JWT 验证失败
- java - 我们如何模拟 OutOfMemory: Metaspace?
- pine-script - 避免连续的买入和卖出信号(我检查了所有以前避免 AA 和 BB 相关的问题,但无法解决我的问题)
- swift - 用curve25519加密[String:Any]
- python - BeautifulSoup 确实错误地过滤掉了文本
- javascript - 使用 Fontsource 加载自托管字体时如何避免链接关键请求?
- c - 赋值后如何将分配的内存释放给指针数组?
- java - 如何重构一个可以有两个流的类
- sql - 如何使用左连接和 information_schema.columns 获取 2 个表中的不常见列?
- javascript - jquery keydown 不适用于移动设备