以编程方式创建ODataQueryOptions

时间:2018-10-05 10:34:52

标签: c# asp.net-web-api2 odata

我的API当前具有一些OData端点,这些端点使用通用ODataQueryOptions接收OData查询...

[HttpGet]
[Route("search")]
public object Search(ODataQueryOptions<MySearchableEntity> options)
{
    return searchService.Search(options);
}

searchService然后遍历Expression的{​​{1}}以构建自定义SQL查询。它对order,top和skip参数的处理类似。

这一切都很好,但是我现在需要它来解析动态类型的查询。

是否可以以编程方式为ODataQueryContext构建EdmModel和IEdmType等,而无需备份“真实” CLR类型?

“类型”的定义很明确,因为我们有描述其形状的类,但它不是CLR类型。

1 个答案:

答案 0 :(得分:0)

找到答案后,回答我自己的问题。

用于验证查询的assign接受ODataQueryContext,但是有一个重载接受IEdmType,而IEdmType可以是Type,这很容易以多种方式构建。

此处的文档:

http://odata.github.io/WebApi/02-01-model-builder-abstract/

http://odata.github.io/WebApi/02-02-model-builder-untyped/

http://odata.github.io/WebApi/02-03-model-builder-nonconvention/

http://odata.github.io/WebApi/02-04-convention-model-builder/