如何过滤多级展开的Odata Query?

How to Filter Odata Query that is expanded by multiple levels?

我目前正在尝试进行 Odata 调用,我通过 "multi-level" 扩展 属性 进行过滤,但是,none 我可以在此找到的文档或信息完全涵盖我想要完成的事情。有谁知道这是否可以完成,如何完成?

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

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

我们可以通过调用以下命令查看没有过滤器的扩展信息:

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

returns:

...{"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=contains(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。

只是在这里回答我自己的问题,事实证明我们的做法是正确的。 系统在管道的其他区域出现故障。