مورد لم يتم العثور على شريحة "الملكية"
-
21-08-2019 - |
سؤال
عند استخدام العميل 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 ()) عند استخدام المفتاح الأساسي الذي لا وجود له (على عكس البعض حيث الشروط التي فقط لا توفر النتائج). كنت اعتقد شيئا مماثلا يحدث لنفسك.