我的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类型。
答案 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/