سؤال

عند استخدام العميل ADO.Net خدمات البيانات لتحديث كيان عن طريق استدعاء LoadProperty:

ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...

وويلقي خطأ على الملقم إذا تم null الممتلكات

<اقتباس فقرة>   

خطأ: استثناء ترتمي: System.Data.Services.DataServiceException:   مورد لم يتم العثور على شريحة "المالك". في   System.Data.Services.RequestDescription.GetSingleResultFromEnumerable (SegmentInfo   segmentInfo) في   System.Data.Services.DataService1.CompareETagAndWriteResponse (RequestDescription   وصف، ContentFormat responseFormat، IDataService dataService)
  في   System.Data.Services.DataService1.SerializeResponseBody (RequestDescription   وصف، IDataService dataService) في   System.Data.Services.DataService1.HandleNonBatchRequest (RequestDescription   وصف) في System.Data.Services.DataService`1.HandleRequest ()

والمشكلة هي أن العميل لا يعرف ما إذا كان العقار null أو مجرد لم يتم ملؤها حتى الان. مالك العقار هو ارتباط من Vehicle إلى Customer.

وأي أفكار ما هو الخطأ؟

والشكر

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

المحلول

والاستعلام على المفاتيح الأساسية توليد استثناء عند عدم وجود المفتاح. الحل هو إضافة التعبير الحقيقي وهمية في حالة (على سبيل المثال: 1 == 1 && item.Id == XXX)

.

وبدون التعبير وهمية على طلب ADO.NET هو:

<اقتباس فقرة>   

وHTTP: //localhost//test.svc/Role(XXX)

ومع حالة وهمية، طلب هو:

<اقتباس فقرة>   

وHTTP: //localhost//test.svc/Role()؟$filter=true و(رقم مكافئ 1)

والسلوك المتوقع (عاد لاغية) هو الصحيح في الحالة الثانية.

نصائح أخرى

IgnoreResourceNotFoundException ممتلكات سياق خدمة إلى true:

svc.IgnoreResourceNotFoundException = true;

ولقد تلقت "مورد لم يتم العثور على شريحة" الملكية "" خطأ أيضا. منجم يبدو أن في شرط حيث أنا أبحث عن طريق المفتاح الأساسي. لقد وجدت بعض الموارد التي يقولون انها سوف رمي خطأ (حتى عند استخدام FirstOrDefault ()) عند استخدام المفتاح الأساسي الذي لا وجود له (على عكس البعض حيث الشروط التي فقط لا توفر النتائج). كنت اعتقد شيئا مماثلا يحدث لنفسك.

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