我在ODataController
中,我有一个ODataQueryOptions
(以及其他所有内容)。
我知道数据源是SQL Server中的一个表。
但是,我的EF模型(WEB API框架用于将HTTP请求路由到我的控制器)是无类型的,即我没有POCO类。
通常情况下 - 如果我确实有一个POCO类 - 框架会神奇地从OData查询中编写SQL,以便在数据库上完成分页,过滤和排序,而不是在Web服务器的内存中完成。您可以在Database.Log
上使用DbContext
来查看从涉及POCO类的LINQ语句生成的SQL。
我如何才能让这件事发生在我身上?我有EF模型,我有OData请求,但如何将它们组合起来查询SQL Server?
答案 0 :(得分:0)
我编写了一个package来将OData查询转换为IQueryable
个对象,这些对象可用于直接查询底层数据库。您仍然需要提供有关表的元数据,但它可以在运行时传递,而不是需要POCO。
就生成SQL而言,返回的IQueryable对象是EntityFramework ObjectQuery对象,因此您只需调用ToString()
来显示SQL,但目前无法检索参数和关联值,因此您“最好使用生成的IQueryable
直接查询数据库。