سؤال

لدي عملية خدمة للنموذج:

[WebGet]
public IQueryable<BusinessObject> BusinessObjectsByType(string name)

مع قاعدة الوصول

config.SetServiceOperationAccessRule("BusinessObjectsByType", ServiceOperationRights.All);

عندما أقوم بالوصول إلى عملية الخدمة هذه من خلال متصفح الويب ، فإنه يكشف البيانات ولكن ليس في الخلاصات والإدخالات (تنسيق Atompub) ولا يتيح لي استخدام خيارات الاستعلام الأساسية مثل $ top ، $ orderby ، إلخ. إلى المورد المطلوب. لقد تطابق جميع المتطلبات المحددة في http://msdn.microsoft.com/en-us/library/cc668788.aspx ولكن دون النجاح. سيكون موضع تقدير أي مساعدة. شكرًا.

هل كانت مفيدة؟

المحلول

إذا لم يتم التعرف على BusSinesObject ككيان ، فسيتم التعامل مع عملية الخدمة كما لو كانت إرجاع Ienumerable بدلاً من ذلك. بالنسبة للاستعلام عن العمل ، يجب أن تُرجع عملية الخدمة iqueryable حيث يكون T نوعًا كيانًا. على افتراض إما EF أو مزود الانعكاس ، فإن نوع الكيان هو نوع له خاصية رئيسية (إما عن طريق السمة من خلال سمة DataServiceKey) والتي توجد بها خاصية على فئة السياق من النوع iqueryable. إذا لم يكن BussinesObject كيانًا ، فلن تتمكن خدمات بيانات WCF من دعم الاستعلامات حول نتيجة تشغيل الخدمة. هناك العديد من الأسباب ، لتسمية واحدة فقط: من أجل تسلسل الاستجابة ، يجب أن يكون لكل كائن عنوان URL فريد (ذرة: معرف) ، لتكون قادرًا على إنشاء عنوان URL فريد يجب أن يكون للكائن خصائص مفتاح. ولا يمكن تعريف الخصائص الرئيسية إلا على الكيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top