OData를 웹 API와 함께 사용하고 유형별로 쿼리를 작성하려고합니다. 내가 원하는 것은 다음과 같은 쿼리를 제공하는 것입니다 (굵은 텍스트는 구문 상 올바르지 않지만 형식을 주장한 후에 무엇을 하려는지 설명합니다) :odata 함수를 사용하여 웹 API를 사용하는 isof
../Supplier?$filter = isof (제품, namespace.ToyProduct) 5
그러나 나는 [Queryable에서] 속성이 일을 내가 관련이있는 방법 지원되지 않는 오류를 얻을 수 ODataController에서 상속 할 때 & Product.ratedAge의 EQ isof. 메서드를 지원할 수있는 방법이 있습니까? AllowedFunctions.All을 Queryable 특성에 추가하려고 시도했지만 작동하지 않았습니다.
ODataQueryOptions를 사용하여 isof가 필터에 포함되어 있는지 확인하고 내 자신의 메서드를 사용하여 확인할 수 있습니다. 그러나 오히려 지저분하고 더 좋은 솔루션이 존재한다면 더 좋은 필터링이 가능할 경우 아마 악화 될 것입니다. !
컴파일되지 않은 코드는 현재의 약자로 :
public class SupplierController : ODataController {
[Queryable(AllowedFunctions = AllowedFunctions.All)]
public PageResult<Supplier> Get(ODataQueryOptions<Supplier> queryOptions) {
// doesn't work, method not supported
//var queryableSuppliers = queryOptions.ApplyTo(_repository.All());
// works but messy method.
var queryableSuppliers = MyIsOfMethod(queryOptions.Filter)
return new PageResult<ObjectType>(
results as IEnumerable<ObjectType>,
Request.GetNextPageLink(),
Request.GetInlineCount());
}
}
"isof"함수를 시뮬레이트하기 위해 쿼리에 대한 "OfType"호출을 발생시키는 해결책이 있습니다. 코드는 https://github.com/schungx/WebApi-odata를 참조하십시오. –