Odata 从客户端库调用参数的数据服务操作失败

Odata 从客户端库调用参数的数据服务操作失败,odata,wcf-data-services,Odata,Wcf Data Services,这里已经提出了类似的问题: 问题的全部描述与我现在的描述相同。唯一不同的是我以正确的方式传递所有参数 我在数据服务中定义了此操作方法: [WebGet] public IQueryable<Equipment> GetCompanyEquips(int id) { return this.CurrentDataSource.GetCompanyEquips(id); } [WebGet] 公共IQueryable GetCompanyEqu

这里已经提出了类似的问题:

问题的全部描述与我现在的描述相同。唯一不同的是我以正确的方式传递所有参数

我在数据服务中定义了此操作方法:

[WebGet]
    public IQueryable<Equipment> GetCompanyEquips(int id)
    {
        return this.CurrentDataSource.GetCompanyEquips(id);
    }
[WebGet]
公共IQueryable GetCompanyEquips(内部id)
{
返回此.CurrentDataSource.GetCompanyEquips(id);
}
我可以在我的web浏览器中毫无问题地从中获得结果:

但当我试图在我的客户身上得到这样的结果时:

 var r = this.CreateQuery<Equipment>("GetCompanyEquips");

            r.AddQueryOption("id", CompanyId);

            r.ToArray();
var r=this.CreateQuery(“GetCompanyEquips”);
r、 添加查询选项(“id”,公司id);
r、 ToArray();
我有以下例外:

“处理此请求时出错。”

我还在调试器中看到了r.Query=“{}”的内容,我怀疑这里出了什么问题,因为我没有看到结尾处的?id=18

同样,当我调用如下方法时:

 var r = this.CreateQuery<Equipment>("GetCompanyEquips");

            r.AddQueryOption("id", CompanyId);

            r.ToArray();
this.Execute(“”)-return包含空枚举(虽然在本例中未引发异常),但当我在浏览器中调用相同的查询字符串时,它会显示预期的结果

同样,当我以类似的方式调用没有任何参数的方法时,一切都可以正常工作。请帮忙!我花了一整天的时间在互联网上搜索蚂蚁,试图解决这个问题,但没有发现我的代码有任何问题


谢谢。

AddQueryOption方法返回IQueryable的新实例。因此,您需要修改代码以执行以下操作:

r = r.AddQueryOption("id", CompanyId);

还有一件事:客户端库不支持读取对返回基本类型或复杂类型枚举的服务操作的响应。因此,要使其工作,设备类型必须是实体类型。

谢谢,这是工作。这里的工作仍然是通过这样的操作返回非实体复杂类型,还是唯一的方法是创建另一个数据服务?我不理解第二个问题。客户端库根本不支持解析来自返回基本类型或复杂类型(或这些类型的枚举)的服务操作的响应。“解决方法”是从服务操作返回实体类型(有时可能,有时相当困难),或者自己解析这样的响应(XML格式很容易处理)。