【问题标题】:Translate OData queries to SQL将 OData 查询转换为 SQL
【发布时间】:2015-04-07 00:31:43
【问题描述】:

我在ODataController 中,我有一个ODataQueryOptions(以及其他所有)。

我知道数据的来源是 SQL Server 中的一个表。

但是,我的 EF 模型(被 WEB API 框架用于将 HTTP 请求路由到我的控制器)是无类型的,即我没有 POCO 类。

通常——如果我确实有一个 POCO 类——框架会神奇地从 OData 查询中编写 SQL,以便分页、过滤和排序在数据库上完成,而不是在 Web 服务器的内存中。您可以在DbContext 上使用Database.Log 查看从涉及 POCO 类的 LINQ 语句生成的 SQL。

我怎样才能让这件事发生在我身上?我有 EF 模型,我有 OData 请求,但是如何将它们结合起来查询 SQL Server?

【问题讨论】:

标签: asp.net-web-api odata asp.net-web-api-odata


【解决方案1】:

我写了一个package将OData查询转换成IQueryable对象,可以用来直接查询底层数据库。您仍然需要提供有关表的元数据,但它可以在运行时传递,而不需要 POCO。

就生成 SQL 而言,返回的 IQueryable 对象是 EntityFramework ObjectQuery 对象,所以你可以调用ToString() 来显示 SQL,但目前没有办法检索参数和关联值,所以你是最好使用生成的IQueryable 直接查询数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2015-10-10
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2017-04-07
    相关资源
    最近更新 更多