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?

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top