J'ai le code suivant. J'obtiens une erreur:
"La conversion en valeur de type 'Int32' a échoué car la valeur matérialisée est null. Soit le paramètre générique du type de résultat, soit la requête doit utiliser un type Nullable."
lorsque la table CreditHistory n'a aucun enregistrement.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
Comment puis-je modifier la requête pour accepter des valeurs nulles?
Pour autoriser un
Amount
champ Nullable , utilisez simplement l'opérateur de fusion NULL pour convertir les NULL en 0.la source
int?
premier.Amount
est unint
, alors nous sommes déjà sûrs qu'il ne peut pas être nul, et la fusion n'est pas nécessaire. Si vous obtenez l'erreur que vous avez dite, alorsAmount
n'est pas nullable, c'est juste unint
, auquel cas vous devrez peut-être changer votre colonne dbml linq2sql dans le concepteur pour autoriser les valeurs nulles.Vous utilisez une
aggregate
fonction qui n'obtient pas les éléments pour effectuer l'action, vous devez vérifier que la requête linq donne un résultat comme ci-dessous:la source
Eu ce message d'erreur lorsque j'essayais de sélectionner dans une vue.
Le problème était que la vue avait récemment gagné de nouvelles lignes nulles (dans la colonne SubscriberId) et n'avait pas été mise à jour dans EDMX (base de données EF en premier).
La colonne devait être de type Nullable pour que cela fonctionne.
var dealer = Context.Dealers.Where (x => x.dealerCode == dealerCode) .FirstOrDefault ();
Avant l'actualisation de la vue:
Après l'actualisation de la vue:
La suppression et l'ajout de la vue dans EDMX ont fonctionné.
J'espère que ça aide quelqu'un.
la source
J'ai utilisé ce code et il répond correctement, seule la valeur de sortie est nullable.
la source
Je vois que cette question est déjà répondue. Mais si vous voulez qu'il soit divisé en deux instructions, vous pouvez envisager de suivre.
la source
Vous avez cette erreur dans Entity Framework 6 avec ce code au moment de l'exécution:
Mise à jour de LeandroSoares:
Utilisez ceci pour une exécution unique:
Original:
Changé à ceci et puis cela a fonctionné:
la source
J'étais également confronté au même problème et résolu en rendant la colonne comme nullable en utilisant "?" opérateur.
Parfois, null est renvoyé.
la source