Ich versuche, Code mit OData arbeiten. Das folgende Bit Code scheint nicht zu funktionieren.Probleme mit einem OData-Filter und einem Guid-Feld
ds ist OpenDataServiceProxy.
adapterTypeId ist die Zeichenfolgendarstellung eines Guid.
adapter ist ein String Name
ds.query('/DataAdapters?$filter=DataAdapterType.DataAdapterTypeId eq guid(\'' + adapterTypeId + '\') and Name eq \'' + adapterName + '\'', ifmgr_CreateAdapter_Step1, onGenericFailure, 'Error');
Die obige Zeile der folgenden Fehler geben:
Expression des Typs 'System.Boolean' an Position erwartet 0.
Wenn ich entfernen Der GUID-Abschnitt des Filters, so dass es nur den "Name" Teil verwendet, funktioniert es gut.
Die Dataadapters Tabellenfeld „DataAdapterTypeId“ fremd ist verkeilt auf die „DataAdapterTypes“ Tabelle DataAdapterTypeId Feld.
Kann jemand feststellen, was ich falsch mache?
------------------- EDIT ----------------------
OK, ich habe den Filter wie unten gezeigt geändert. Ich erhalte keinen Fehler mehr, bekomme aber viele Ergebnisse zurück anstatt einen Datensatz, der dem Filter entspricht. Kann jemand sagen, warum es nicht filtert?
ds.query('/DataAdapters?($filter=Name eq \'' + adapterName + '\' and $filter=DataAdapterTypeId eq guid\'' + adapterTypeId + '\')', ifmgr_CreateAdapter_Step1, onGenericFailure, '');
machte ich die Änderungen empfohlen, aber jetzt habe ich alle Datensätze zurück, nicht nur derjenige, der den Filter übereinstimmt. Ich habe meiner ursprünglichen Frage Details hinzugefügt. – Retrocoder
Legen Sie keine Parthesis um die $ -Filter herum. –
Wenn yoy wollen zwei Bedingungen verwenden, so etwas wie: $ filter = Name eq 'foo' und Beschreibung eq 'bar' –