Estoy intentando obtener algún código que funcione usando OData. El siguiente bit de código no parece funcionar.Problemas con un filtro OData y un campo Guid
ds es OpenDataServiceProxy.
adapterTypeId es la cadena de representación de un Guid.
adaptername es un nombre de cadena
ds.query('/DataAdapters?$filter=DataAdapterType.DataAdapterTypeId eq guid(\'' + adapterTypeId + '\') and Name eq \'' + adapterName + '\'', ifmgr_CreateAdapter_Step1, onGenericFailure, 'Error');
La línea anterior da el siguiente error:
Expresión del tipo 'System.Boolean' espera en la posición 0.
Si quito la sección Guid del filtro para que solo use la parte "Nombre" funciona bien.
El campo de tabla DataAdapters "DataAdapterTypeId" tiene una clave externa al campo DataAdapterTypeId de la tabla "DataAdapterTypes".
¿Alguien puede detectar lo que estoy haciendo mal?
------------------- EDITAR ----------------------
OK, he cambiado el filtro como se muestra a continuación. Ya no recibo un error, obtengo muchos resultados en lugar de un registro que coincida con el filtro. ¿Alguien puede decir por qué no se está filtrando?
ds.query('/DataAdapters?($filter=Name eq \'' + adapterName + '\' and $filter=DataAdapterTypeId eq guid\'' + adapterTypeId + '\')', ifmgr_CreateAdapter_Step1, onGenericFailure, '');
Hice los cambios que recomendó, pero ahora recupero todos los registros, no solo el que coincide con el filtro. He agregado detalles a mi pregunta original. – Retrocoder
No coloque parestesis alrededor de los $ filtros. –
Si desea dos condiciones, use algo como: $ filter = Nombre eq 'foo' y Descripción eq 'bar' –