Un opérateur binaire avec des types incompatibles a été détecté. Trouvé opérande de type 'Edm.Guid " et " Edm.String' pour l'opérateur de type "Égales"
Je suis l'exception suivante lors de l'appel de OData de mon Kendo ListView:
"Un opérateur binaire avec des types incompatibles a été détecté. Trouvé opérande
types de Edm.Guid " et " Edm.Chaîne' de l'opérateur nature "Égaux","
DÉCODÉ FILTRE:
$filtre=OrganizationId eq '4c2c1c1e-1838-42ca-b730-399816de85f8'
CODÉ FILTRE:
%24filter=OrganizationId+eq+%274c2c1c1e-1838-42ca-b730-399816de85f8%27
ONT ÉGALEMENT UNSUCESSFULLY ESSAYÉ CES FILTRES:
$filtre=OrganizationId eq guid'4c2c1c1e-1838-42ca-b730-399816de85f8'
$filtre=OrganizationId eq cast('4c2c1c1e-1838-42ca-b730-399816de85f8', Edm.Guid)
MON WEB, LES APPELS DE L'API RESSEMBLE:
//GET: odata/Sites
[HttpGet]
[EnableQuery]
public IHttpActionResult GetSites(ODataQueryOptions<Site> queryOptions)
{
IQueryable<Site> sites = null;
try
{
queryOptions.Validate(_validationSettings);
sites = _siteService.GetAll().OrderBy(x => x.SiteName);
if (sites == null)
return NotFound();
}
catch (ODataException ex)
{
TraceHandler.TraceError(ex);
return BadRequest(ex.Message);
}
return Ok(sites);
}
MON JAVASCRIPT KENDO SOURCE DE DONNÉES RESSEMBLE À:
var dataSource = new kendo.data.DataSource({
filter: { field: "OrganizationId", operator: "eq", value: that.settings.current.customer.id },
schema: {
data: function (data) {
return data.value;
},
total: function (data) {
return data.length;
}
},
serverFiltering: true,
serverPaging: true,
transport: {
parameterMap: function (options, type) {
var paramMap = kendo.data.transports.odata.parameterMap(options);
//Remove invalid Parameters that Web API doesn't support
delete paramMap.$inlinecount; //<-- remove inlinecount
delete paramMap.$format; //<-- remove format
delete paramMap.$callback; //<-- remove callback
//PLEASE NOTICE: That I have tried reformatting unsuccessfully
//paramMap.$filter = paramMap.$filter.replace("OrganizationId eq ", "OrganizationId eq guid");
//paramMap.$filter = "OrganizationId eq cast('81de6144-987c-4b6f-a9bd-355cb6597fc1', Edm.Guid)";
return paramMap;
},
read: {
url: buildRoute('odata/Sites')
, dataType: 'json'
}
},
type: 'odata'
});
J'ai vu et essayé dans cette tentative (noté ci-dessus): $filtre=OrganizationId eq guid'4c2c1c1e-1838-42ca-b730-399816de85f8 " pensez-vous que c'est (en quelque sorte) mis en forme de façon incorrecte? Je suis coincé.
Pouvez-vous l'appeler avec succès par fiddler ou directement dans le navigateur au lieu de via Kendo?
Nan...en entrant directement l'URL est la façon dont j'ai été capable de voir le message (ci-dessus)
Quelle est la version de OData utilisez-vous? Le guid'...' syntaxe n'était nécessaire que pour les anciennes versions de OData, lorsque nous avons normalisé nous avons simplifié de ce juste " ... " comme dans votre "DÉCODÉ FILTRE". Vous pouvez poster une repro projet quelque part?
OriginalL'auteur Prisoner ZERO | 2015-03-11
Vous devez vous connecter pour publier un commentaire.
Si le service OData est le protocole de la version V4, la bonne URL de la requête doit être:
Pas de guillemets simples est nécessaire.
"{\"message\":\"Syntax error at position 14 in 'Id eq 07a2c616-968b-4a73-97bc-031c401e0b07'.\"}"
avez-vous la moindre idée?J'ai brièvement rencontré ce message d'erreur lorsque mon guid était pas valide (par exemple, un caractère supplémentaire). Le guid dans Yusril commentaire souffre du même problème avec un caractère supplémentaire.
J'ai eu le même problème, mais avec le type int - enlever les guillemets résolu le problème.
OriginalL'auteur Yi Ding - MSFT
Je suis tombé sur cette erreur lors d'une requête OData 4.0 via Microsoft Dynamics. Les autres réponses ici n'aide pas, malheureusement, même si ils sont exactement. Ma question était plus avec la remise EntityReference est dans les filtres.
J'ai fini par régler mon filtre à quelque chose comme cela, pour cibler la clé étrangère correctement. Dans l'exemple ci-dessous 'parentaccountid' est la clé étrangère de l'entité I est l'interrogation. 'accountid" est la clé primaire dans les comptes de l'entité.
OriginalL'auteur raterus
Chaque valeur qui est d'avoir une sorte de un id à une autre entité de référence dans ms crm, doit être évalué comme suit.
Ne nécessitent pas de guillemets ou chaîne guid.
OriginalL'auteur RohitKumar
S'il vous plaît essayer
OriginalL'auteur Animesh Kumar