J'utilise VS2010, Entity Framework 4.0 et Advantage v. 10 dans mon application. J'ai écrit une instruction Linq-to-Entities (L2E) qui essaie de convertir un type numérique (décimal) Nullable en un nombre décimal. Une simple déclaration pourrait ressembler à:framework d'entité + base de données d'avantages: conversion de types numériques nullables
var x = (from test in entities.Tests
select test.ValueA.HasValue ? test.ValueA.Value : 0);
Cependant, je reçois l'erreur suivante:
System.Data.EntityCommandExecutionException: Une erreur est survenue lors de l'exécution de la définition de la commande. Voir l'exception interne pour plus de détails. ---> Advantage.Data.Provider.AdsException: Erreur 7200: Erreur AQE: State = S0000; NativeError = 2159; [Solutions iAnywhere] [Moteur SQL Advantage] Argument invalide de la fonction scalaire: CAST - doit spécifier à la fois la précision et l'échelle. - L'emplacement de l'erreur dans l'instruction SQL est: xxx (ligne: x colonne: x) L'exécution de la requête AdsCommand a échoué.
Existe-t-il un moyen d'énumérer les résultats et d'effectuer la conversion côté client? Je ne suis pas sûr de savoir comment dire à Advantage la précision et l'échelle de "0" à travers l'énoncé L2E.
Merci d'avance.
cette conversion ne fonctionne pas. Cependant avez-vous essayé quelque chose comme. select test.Valeur ?? 0 Il se peut que je manque un casting quelque part, mais si vous pouvez le traduire, cela pourrait faire l'affaire. Parfois, changer la syntaxe permet de faire avancer les choses. – zeeshanhirani
zeeshanhirani, oui, j'ai essayé le ?? syntaxe. Malheureusement, cela n'a pas fonctionné. L'utilisation de la fonction IsNull proposée par LanceSc est une solution de contournement viable. Merci quand même! – user429994