Odata Consumare Service Operation da C # ASP.NET 4.0
-
28-09-2019 - |
Domanda
Sto collegando a un servizio odata tramite un'applicazione C # ASP.NET, che ha le operazioni di servizio come ad esempio:
GetItems(int? itemID, double? price)
I può consumare questo senza problemi nel mio browser, per esempio.
http://api.mycompany.com/companycatalogue/GetItems?itemID=4
I capire come utilizzare LINQ to Entities di consumare un servizio odata, ma non riesce a trovare una spiegazione decente di come consumare il servizio operazioni come quello sopra in C #. Ho fatto un riferimento Web al servizio della mia soluzione di Visual Studio.
Finora, ho qualcosa di simile per la mia solita consumo dei dati:
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
}
Tutti gli indicatori?
Soluzione
OK, ha ottenuto la risposta:
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();
}
Altri suggerimenti
Questo può essere di aiuto per voi. Questo codice di esempio utilizzato per consumare l'operazione del servizio in Data Service WFC. Questa operazione di servizio (GetRowCount) restituisce il valore tipo intero (int). inserire il nome para è "codice"
var q = context.CreateQuery<int>("GetRowCount").AddQueryOption("code", "'" + serviceProvider.Code + "'");
int RecordCount = context.Execute<int>(new Uri(q.RequestUri.ToString().Replace("GetRowCount()", "GetRowCount"))).FirstOrDefault();
Hai provato a usare HttpWebRequest?