2

我在一个ODataController并且我有一个ODataQueryOptions(以及所有其他的)。

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

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

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

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

4

1 回答 1

0

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

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

于 2017-03-02T04:57:15.017 回答