OData.Net 不允许在 $filter 中包含
OData.Net doesn't allow contains in the $filter
我到处都读到在 OData v3 中你应该使用 substringof()
而在 v4 中你应该使用 contains()
。我从 NuGet 安装了 Microsoft.AspNet.WebApi.OData,版本为 5.5.1。
奇怪的是,contains() 不起作用。我收到以下错误:
{"message":"The query specified in the URI is not valid. An unknown function with name 'contains' was found. This may also be a key lookup on a navigation property, which is not allowed." ... }
相反,substringof()
工作正常。应该是这样吗?
NuGet 包版本是 5.5.1,但这不是指支持的 OData 版本。由于 OData v1-3 和 OData v4 有一些不兼容的变化,WebAPI OData 包有两个版本:
ASP.NET Web API 2.2 for OData v1-3
包 ID:Microsoft.AspNet.WebApi.OData,版本:5.5.1
ASP.NET Web API 2.2 for OData v4
包 ID:Microsoft.AspNet.OData,版本:5.6.0
所以您目前使用的是 OData v3,错误信息是正确的,contains() is not defined in OData v3
为 WebApi 启用 OData 的两个 NuGet 包如下:
Microsoft.AspNet.WebApi.OData 用于 OData v1-3
Microsoft.AspNet.OData 对于 OData v4
尽管 v4 的名称中没有提到 WebApi,但它仍然是可以使用的。命名已更改并反映了包 ID(lukehellrunner 包括这些)
两者的当前版本均为 5.7.0。
我到处都读到在 OData v3 中你应该使用 substringof()
而在 v4 中你应该使用 contains()
。我从 NuGet 安装了 Microsoft.AspNet.WebApi.OData,版本为 5.5.1。
奇怪的是,contains() 不起作用。我收到以下错误:
{"message":"The query specified in the URI is not valid. An unknown function with name 'contains' was found. This may also be a key lookup on a navigation property, which is not allowed." ... }
相反,substringof()
工作正常。应该是这样吗?
NuGet 包版本是 5.5.1,但这不是指支持的 OData 版本。由于 OData v1-3 和 OData v4 有一些不兼容的变化,WebAPI OData 包有两个版本:
ASP.NET Web API 2.2 for OData v1-3
包 ID:Microsoft.AspNet.WebApi.OData,版本:5.5.1
ASP.NET Web API 2.2 for OData v4
包 ID:Microsoft.AspNet.OData,版本:5.6.0
所以您目前使用的是 OData v3,错误信息是正确的,contains() is not defined in OData v3
为 WebApi 启用 OData 的两个 NuGet 包如下:
Microsoft.AspNet.WebApi.OData 用于 OData v1-3
Microsoft.AspNet.OData 对于 OData v4
尽管 v4 的名称中没有提到 WebApi,但它仍然是可以使用的。命名已更改并反映了包 ID(lukehellrunner 包括这些)
两者的当前版本均为 5.7.0。