كيف يمكنني استخدام. "تضمين" على عمليات تشغيل الخدمة لخدمات البيانات ADO.Net

StackOverflow https://stackoverflow.com/questions/494337

سؤال

وأنا باستخدام خدمات البيانات ADO.Net ولها عمليات تشغيل الخدمة أن ينتهي يعود نتائج بعض LINQ إلى البيانات الكيانات. وكجزء من تلك التصريحات ينق هناك. تتضمن ( "NavProp") لتشمل وجوه الفرعية. عند تشغيل هذه العملية خدمة لا يبدو للعودة التي توسعت وتشمل. لا أحد يعرف أي لماذا هذا أو كيفية إصلاح ذلك؟ هل من الممكن لإضافة كلمة أساسية في الدعوة إلى العملية خدمة لتوسيع ذلك الفرعي الكائن؟ (حاولت $ = توسيع subObject ولكن هذا لا يبدو للعمل - طلب غير صحيح).

وأود في نهاية المطاف مع إما: 1.) بناء الجملة من أجل بيان LINQ في عملية الخدمة التي ترجع. تتضمن أيضا (وأنا متأكد من لم يكن ذلك ممكنا)

something like:
(from c in context.MyObj.Include("SubObj")
select c).ToList()
(this works inside the service operation, but doesn't provide the SubObj on the client side)

أو

2) بناء الجملة من أجل طلب تشغيل الخدمة لتوسيع subObject

something like: http://localhost/MyDataService/MyDataService.svc/ServiceOp1?param1=234$expand=SubObj (note: this doesn't work)
هل كانت مفيدة؟

المحلول

ويبدو أن هذا غير ممكن في الوقت الحاضر (.NET 3.5 SP1). وعمليات الخدمة يعود فقط إما أنواع أو الكيانات primative. أي نوع آخر بما في ذلك الأنواع المخصصة أو الكيانات موسع لا يمكن أن تعاد من عملية الخدمة. للتعامل مع هذا يجب على المرء أن مجرد العودة البند (ق) من تشغيل الخدمة ومن ثم إذا تضمين / هو مطلوب على جانب العميل يجب على المرء أن نطلق عليه "LoadProperty" لتوسيع الكائن المطلوب توسيع (ملاحظة: هذا يعني قاعدة بيانات أخرى ضرب في دعوة LoadProperty).

نصائح أخرى

وبعد أن عبر البريد الالكتروني MS بشأن هذه المسألة، والحل هو استخدام خيار الاستعلام التوسع في اوري العملية الخدمة. على سبيل المثال،

.../<ServiceOperationName>.svc?$expand=<Property1Name>,<Property2Name> ...

Service Operation: GetCustomer
Relationship Property to load: Address
Uri: .../<GetCustomer>.svc?$expand=Address

وآمل أن يساعد هذا.

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