【问题标题】:.NET IQueryable MSSQL and ASP.NET WebAPI.NET IQueryable MSSQL 和 ASP.NET WebAPI
【发布时间】:2018-09-27 20:56:37
【问题描述】:

案件如下。

在 WPF 应用程序中有 DataGrid,它使用 IQueryable 作为 ItemsSource(应用过滤、排序、分组、聚合等)我们有 MSSQL Server DB,如果我们使用 EF 从应用程序直接连接到 DB,则数据存储在其中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) 针对这种情况有一些现有的解决方案吗?

【问题讨论】:

    标签: c# .net sql-server wpf asp.net-web-api


    【解决方案1】:

    我找到了解决问题的方法是Remote.LINQ

    【讨论】:

      【解决方案2】:

      也许我没有正确理解您可能会问的所有内容,但我会尝试回答。

      如果您使用 WPF 直接与 SQL-Server 对话,它会通过驱动程序使用特殊协议。有很多文章公开了 SQL Server,因为也可能有 MS Azure 托管的 SQL Server 等。这只是为了你可能会考虑回到 SQL Server 的情况。

      如果您沿着通过 WebAPI 实现后端的路线走下去,您需要确保您实现了查询应用程序所需信息所需的所有后端路线。 OData 是基于 http 的某种查询语言协议。因此,它实现了您需要使用 WebApi 自行重建的所有查询语法。

      尽管如此,在没有看到任何代码的情况下,很难发现任何错误。 但是...这是一个教程,如何通过 http 客户端库查询 Web 服务并在 wpf 数据网格中显示信息。在这里包含代码可能很长,而且很容易用谷歌搜索。

      https://www.c-sharpcorner.com/UploadFile/raj1979/consume-Asp-Net-web-api-using-httpclient-in-wpf/

      在一个更严肃的应用程序中,您希望考虑拥有一些抽象和层,但最终您通过 http 客户端将您的 webAPI 解析为对象并绑定它。 IQueryable 不是免费的,除非您考虑使用 OData,否则需要实施。我会更容易实现您的应用程序所需的东西并明确公开这些路由。

      不知道这是否能满足您的要求,但它可能有助于重新思考这个概念。 如果我弄错了,请考虑更准确地更新您的问题。

      HTH

      【讨论】:

        猜你喜欢
        • 2015-03-29
        • 2023-03-28
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多