首页 > 解决方案 > 错误:“非法查询语法。'/' 之前的段不是实体或复杂类型。”

问题描述

我正在尝试在嵌套$expanded实体中使用过滤器查询。

例如,我正在使用以下查询。

webservice/Results?$expand=FoodDescriptions&$filter=substringof('Vod', FoodDescriptions/Description)&$format=json

执行此操作时,我收到以下错误

{
    "error": {
        "code": "",
        "message": {
            "lang": "en-US",
            "value": "Illegal query syntax. Segment before '/' is not an entity or complex type."
        }
    }
}

我从下面的公共服务示例中得到了这个查询。

https://services.odata.org/V2/Northwind/Northwind.svc/Orders?$expand=Customer&$filter=substringof('Henriette', Customer/ContactName)&$format=json

在这种情况下,我得到了正确的响应,任何人都可以测试它。

有人可以告诉我代码中出现此特定错误的原因是什么吗?

标签: nestedodataexpand

解决方案


您的问题很可能出在 ODataConfig 下 - 您没有FoodDescriptions设置为实体。

如果你去这里 [https://services.odata.org/V2/Northwind/Northwind.svc/$metadata],你可以找到这一行<EntitySet Name="Customers" EntityType="NorthwindModel.Customer"/>

在您的情况下,您可能只是忘记将FoodDescriptions注册为实体。


推荐阅读