将OData查询转换为SQL

3

我正在使用一个ODataController,并且我有一个ODataQueryOptions(和其它所有的内容)。

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

然而,我的EF模型(由WEB API框架用于将HTTP请求路由到我的控制器)是无类型的,也就是说,我没有POCO类。

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

我该如何让这个对我起作用呢?我有EF模型,我有OData请求,但如何将它们组合起来查询SQL Server?


我编写了一个动态 ODATA,通过将 OData 查询转换为 SQL 来实现,网址是:https://github.com/cuongle/DynamicOdata。 - cuongle
1个回答

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接