Одата потребляет операция обслуживания от C # ASP.NET 4.0
-
28-09-2019 - |
Вопрос
Я подключаю к службе Odata через приложение C # ASP.NET, который имеет операции служб, такие как:
GetItems(int? itemID, double? price)
Я могу потреблять это без проблем в моем браузере, например
http://api.mycompany.com/companycatalogue/GetItems?itemID=4
Я понимаю, как использовать Linq для объектов, чтобы потреблять службу ODATA, но не может найти приличное объяснение того, как потреблять сервис операции Как то выше в C #. Я сделал веб-ссылку на службу в моем решении Visual Studio.
До сих пор у меня есть что-то подобное для моего обычного потребления данных:
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) возвращает значение INTEGER (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?