2009-01-06 10 views
7

je une procédure stockée qui utilise des paramètres de sortie comme ceci:precision décimal et échelle en utilisant LINQ et la procédure stockée avec des paramètres de sortie

ALTER PROCEDURE [GetAmount] 
( 
@orderID [int], 
@totalcost decimal(18,2) OUTPUT 
) 
SELECT @totalcost = cost 
FROM mytable 
WHERE orderID = @orderID 

Lorsque je fais glisser la procédure stockée sur le concepteur, le code résultant dans le fichier designer.cs finit par perdre la précision et l'échelle, comme ceci:

[Parameter(DbType="Decimal")] ref System.Nullable<decimal> totalcost 

Ceci est un problème, parce que les choses comme les prix des produits et les totaux de commande sont arrondis (c.-à 19,95 devient 20).

Maintenant, je peux corriger manuellement le fichier .cs, mais je devrais me rappeler de le faire chaque fois qu'une mise à jour est faite. Est-ce que je fais quelque chose de mal? Existe-t-il un moyen de modifier ma procédure stockée qui permettrait à LINQ de détecter automatiquement la précision et l'échelle?

Répondre

2

Pouvez-vous utiliser le type d'argent plutôt que le type decial (18,2)?

+0

Intéressant - l'argent fonctionne. Des idées pourquoi? – Ethan

+0

Je ne sais pas vraiment pourquoi la décimale ne fonctionne pas correctement. Je devrais jouer avec ça encore plus. Pardon. –

3

je peux corriger manuellement le fichier .cs, mais

droit, vous devez déplacer ce code dans un fichier de classe partielle, modifier la précision de la cartographie là, et laisser tomber la procédure stockée du concepteur .

Cela vous donne une spécification manuelle dans le code du mappage à la procédure stockée.

+0

GENIUS !!! J'aurais aimé y penser il y a longtemps. – BG100

Questions connexes