我正在调查Odata的反射提供程序,我理解客户端请求的查询将在我们公开为IQuereable元素的列表(CLR对象)中进行过滤。是否有任何方法可以捕获查询请求URL-在服务器端并解析URL,以便我们可以填充我们公开的列表,并按需提供相关信息,而不是填充整个数据转储?
答案 0 :(得分:1)
设计的方法是实际实现IQueryable。它可能有点复杂,但它为您提供了所需的所有信息,而无需解析URL(为了使其正确,这一点更为复杂)。
看一下这一系列的博客,这些博客描述了您可能会遇到的表达式:http://blogs.msdn.com/b/vitek/archive/2010/02/25/data-services-expressions-part-1-intro.aspx
然后可能是这个,它表明你可以只处理表达式树的部分内容,并像今天一样评估内存中的其余部分:http://blogs.msdn.com/b/vitek/archive/2012/01/07/projections-in-custom-providers-simple-solution.aspx
我知道几个OData服务器实现使用这种部分实现IQueryable的方法(主要是过滤和排序在后端完成,其余的在内存中完成)。