Problemas con un filtro OData y un campo Guid

Estoy tratando de obtener algún código de trabajo utilizando OData. El siguiente bit de código no parece funcionar.

ds es OpenDataServiceProxy.

adapterTypeId es la representación de cadena 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 de tipo ‘System.Boolean’ esperada en la posición 0.

Si elimino la sección Guid del filtro para que solo use la parte “Nombre”, funciona bien.

El campo de la tabla de DataAdapters “DataAdapterTypeId” tiene una clave ajena al campo “DataAdapterTypes” de la tabla DataAdapterTypeId.

¿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, pero 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, ''); 

El valor guid debe tener el formato guid ”; consulte esto para obtener más información: http://www.odata.org/developers/protocols/overview#AbstractTypeSystem No sepa qué desea lograr con DataAdapterType.DataAdatperTypeId, pero El carácter de punto no tiene un significado especial en la expresión de filtro, por lo que probablemente no hace lo que querías. Si su conjunto de entidades DataAdapters tiene entidades de tipo DataAdapterType, que luego tiene una propiedad DataAdapterTypeId que es de tipo GUID, entonces puede filtrarlas simplemente

 DataAdapterTypeId eq guid'' 

Con OData v4 lo que me funciona en ASP.NET es

‘DataAdapterTypeId eq’ + adapterTypeId

Observe sin comillas ni conversiones alrededor del valor guid. adapterTypeId un error si adapterTypeId no es un GUID.

Puede encontrar la referencia actualizada de la convención de URL aquí .