OData.Net不允许在$ filter中包含

时间:2015-06-27 05:45:14

标签: asp.net odata visual-studio-2015

我随处读到,在OData v3中你应该使用substringof(),在v4中你应该使用contains()。我从NuGet安装了版本 5.5.1 的Microsoft.AspNet.WebApi.OData。

奇怪的是,contains()不起作用。我收到以下错误:

  

{“message”:“URI中指定的查询无效。找到名为'contains'的未知函数。这也可能是导航属性的键查找,这是不允许的。” ......}

相反,substringof()工作正常。它应该是那样的吗?

2 个答案:

答案 0 :(得分:5)

NuGet包版本是5.5.1,但这并不是指支持的OData版本。由于OData v1-3和OData v4有一些不兼容的更改,因此有两个版本的WebAPI OData包:

适用于OData v1-3的ASP.NET Web API 2.2

包ID:Microsoft.AspNet.WebApi.OData,版本:5.5.1

适用于OData v4的ASP.NET Web API 2.2

包ID:Microsoft.AspNet.OData,版本:5.6.0

所以你现在正在使用OData v3并且错误消息是正确的,在OData v3中没有定义contains()

答案 1 :(得分:0)

启用OData for WebApi的两个NuGet包如下:

适用于OData v1-3的

Microsoft.AspNet.WebApi.OData

适用于OData v4的

Microsoft.AspNet.OData

即使v4在名称中没有说出WebApi,它仍然是要使用的。命名已更改并反映了包ID(包含这些内容的lukehellrunner)

两者的当前版本均为5.7.0。