سؤال

أنا أتصل بخدمة 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). اسم الفقرة الإدخال هو "رمز"

    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