我通过C#ASP.NET应用程序连接到ODATA服务,该应用程序具有以下服务操作:
GetItems(int? itemID, double? price)
我可以在浏览器中毫无问题地使用它,例如
http://api.mycompany.com/companycatalogue/GetItems?itemID=4
我理解如何使用LINQ to Entities来使用ODATA服务,但无法找到如何使用服务操作的正确解释,就像上面的C#一样。我在Visual Studio解决方案中对该服务进行了Web引用。
到目前为止,我通常会使用这些数据:
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
}
任何指针?
答案 0 :(得分:3)
好的,得到了答案:
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();
}
答案 1 :(得分:1)
这可能对您有所帮助。 此示例代码用于使用WFC数据服务中的服务操作。此服务操作(GetRowCount)返回整数(int)类型值。输入段名是“代码”
var q = context.CreateQuery<int>("GetRowCount").AddQueryOption("code", "'" + serviceProvider.Code + "'");
int RecordCount = context.Execute<int>(new Uri(q.RequestUri.ToString().Replace("GetRowCount()", "GetRowCount"))).FirstOrDefault();
答案 2 :(得分:0)
您是否尝试过使用HttpWebRequest?