【发布时间】:2010-03-22 08:59:01
【问题描述】:
我正在开发一个通用 OData 提供程序,以对抗我们在此处拥有的自定义数据提供程序。 Thsi 是完全动态的,因为我向数据提供者查询它知道的表。到目前为止,我有一个基于 OData 示例代码的基本存储结构。
我的问题是:OData 支持查询并希望我提交 IQueryable 实现。在低端,我没有任何查询支持。不是开玩笑 - 提供者返回表并且不支持 WHERE 子句。性能在这里不是问题 - 表很小。可以在 OData 提供程序中对其进行排序。
我的主要问题是这个。
- 我提交了一条 SQL 语句来取出一个表的数据。结果是某种 ADO.NET 数据阅读器。
- 我需要为此数据公开一个 IQueryable 实现,以便以后过滤。
任何想法如何最好地触摸它?仅 .NET 3.5(一段时间未计划 4.0)。我正在认真考虑为每个表(发出字节码)创建动态 DTO 类,以便我可以使用标准 LINQ。现在我每个条目都使用一个字典(效率不是很高),但我看不到真正的方法可以根据它们进行过滤/排序。
【问题讨论】:
-
如果你没有对象(或结构)来询问谓词,你想如何使用过滤。据我所知,您需要提供 IQuerable 的实现。这样您就可以将表达式转换为过滤结果集的委托。
-
从技术上讲,我暂时不运行任何过滤并忽略它是完全可以的;) 暴露了许多表,它们基本上用于填充下拉列表 - 以及一些“存储过程” " 无论如何都会在逻辑中进行过滤。
标签: linq wcf-data-services odata astoria