Ressource für Segment „Property“ nicht gefunden
-
21-08-2019 - |
Frage
Bei Verwendung des ADO.Net Data Services-Clients zum Aktualisieren einer Entität durch Aufrufen von LoadProperty
:
ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...
Wenn die Eigenschaft vorhanden ist, wird ein Fehler auf dem Server ausgegeben null
Fehler:Ausnahme ausgelöst:System.Data.Services.DataServiceException:Für das Segment „Eigentümer“ wurde keine Ressource gefunden.unter System.data.services.RequestDescription.getSingleresultfromenumerable (SegmentInfo SegmentInfo) at system.data.services.dataservice1.comPareETAGandWriterePT (RequestDescription Beschreibung, ContentFormat ResponseFormat, idataservice DataService)
bei System.Data.Services.DataService1.SerializersponseBody (RequestDescription Beschreibung, idataService dataService) bei System.data.Services.DataService1.HandlenonBatchRequest (RequestDescription Beschreibung) bei System.data.Services.DataService.
Das Problem besteht darin, dass der Kunde nicht weiß, ob die Immobilie vorhanden ist null
oder ist einfach noch nicht besiedelt.Der Eigentümer der Immobilie ist ein Link von a Vehicle
zu einem Customer
.
Irgendwelche Ideen, was los ist?
Danke
Lösung
Beim Abfragen von Primärschlüsseln wird eine Ausnahme generiert, wenn der Schlüssel nicht vorhanden ist.Die Problemumgehung besteht darin, der Bedingung einen echten Dummy-Ausdruck hinzuzufügen (z. B.:1==1 && item.Id == XXX).
Ohne den Dummy-Ausdruck lautet die ADO.NET-Anfrage:
http://localhost//test.svc/Role(XXX)
Mit der Dummy-Bedingung lautet die Anfrage:
http://localhost//test.svc/Role()?$filter=true und (Id eq 1)
Das erwartete Verhalten (null zurückgegeben) ist im zweiten Fall korrekt.
Andere Tipps
IgnoreResourceNotFoundException Eigenschaft des Dienstkontext true:
svc.IgnoreResourceNotFoundException = true;
Ich habe auch eine „Ressource wurde nicht gefunden für Segment‚Property‘“ Fehler empfangen. Mine wird in der Where-Klausel sein, dass ich nach dem Primärschlüssel suchen. Ich habe einige Ressourcen gefunden, die es sagen, wird einen Fehler werfen (auch wenn FirstOrDefault mit ()), wenn ein Primärschlüssel, die nicht (im Gegensatz zu anderen entgegengesetzt, wo Klauseln, die nicht nur Ergebnisse liefern) nicht vorhanden ist. Ich würde vermuten, eine ähnliche Sache selbst geschieht.