如何过滤扩展了多个级别的Odata查询?

时间:2019-09-19 03:37:11

标签: url odata

我目前正在尝试进行Odata调用,并使用“多级”扩展属性对其进行过滤,但是,我在此找不到的任何文档或信息都无法准确地说明我要完成的工作。有人知道这是否可以完成吗?

这是为了让我们的用户能够通过参加测试的房间的名称来过滤他们的测试。我们已经能够通过单级扩展进行过滤,从而使用户能够通过测试的名称来过滤他们的测试。位置,但我们似乎无法在第二级获得正确的语法。

对于上下文,我们的测试表链接到位置表,该位置表链接到房间表。

我们可以通过调用以下内容来查看扩展信息,而无需过滤器:

  

... / api / Tests $ expand = Location($ select = Id,LocationName; $ expand = Room($ select = Id,RoomName))

返回:

  

... {“ Id”:19955,“ LocationId”:102,“ Location”:{“ Id”:102,“ LocationName”:“ TestLocation”,“ Room”:{“ Id”:8,“ RoomName“:” TestRoom“}},...

但是当我们尝试过滤的呼叫时,例如:

  

... / api / Tests $ expand = Location($ select = Id,LocationName; $ expand = Room($ select = Id,RoomName))&$ filter =包含(Location / Room / RoomName,%27a% 27))

我们所得到的就是标准:

{"error":{"code":"NotFound","message":"The type 'Edm.String' is not an entity type. Only entity types support $select and $expand.\r\nParameter name: context"}}

肯定有某种方法可以从多层扩展中进行过滤,但是我对使用OData还是一个新手,因此,我们将不胜感激!

此外,我相信我们正在使用OData-7.01。

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题,因为事实证明我们的做法是正确的。 该系统正在沿管道的其他区域中断。