我正在通过C#ASP.NET应用程序连接到ODATA服务,该应用程序具有以下服务操作:

GetItems(int? itemID, double? price)

我可以在浏览器中毫无问题的情况下消耗此问题,例如

http://api.mycompany.com/companycatalogue/GetItems?itemID=4

我了解如何使用LINQ到实体消费ODATA服务,但找不到有关如何消费服务的体面解释 操作 就像上面的C#中的那个。我在视觉工作室解决方案中对该服务进行了网络参考。

到目前为止,我有类似的东西来惯用数据:

using CompanyCatalogue; //my web reference
...
protected void Page_Load(object sender, EventArgs e)
{
    CompanyCatalogueEntities dataContext = new CompanyCatalogueEntities (new Uri("http://api.mycompany.com/companycatalogue/"));
    var result = from i in dataContext.Items select i;  //just an example

    //this is where I get into problems
    var operationResults = CompanyCatalogue.GetItems(6, 20.5); //I just made this up
}

有指针吗?

有帮助吗?

解决方案

好,得到答案:

using CompanyCatalogue; //my web reference
...
protected void Page_Load(object sender, EventArgs e)
{
    CompanyCatalogueEntities dataContext = new CompanyCatalogueEntities(); 

    DataServiceQuery<GetItemsResult> q = dataContext.CreateQuery<GetItemsResult>("GetItems")
        .AddQueryOption("paramName", 6)
        .AddQueryOption("paramName2", 20.5);

    List<GetItemsResult> items = q.Execute().ToList();
}

其他提示

这可能对您有帮助。该示例代码用于在WFC数据服务中使用服务操作。此服务操作(GetRowCount)返回整数(INT)类型值。输入para名称为“代码”

    var q = context.CreateQuery<int>("GetRowCount").AddQueryOption("code", "'" + serviceProvider.Code + "'");
            int RecordCount = context.Execute<int>(new Uri(q.RequestUri.ToString().Replace("GetRowCount()", "GetRowCount"))).FirstOrDefault();

您是否尝试过使用httpwebrequest?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top