Question

Je travaille avec LINQ pour la première fois et je voulais que le mappage fonctionne lorsque j'ai un type d'argent dans SQL, mais ma propriété d'objet de domaine est de type double.Comment puis-je exprimer cela dans le fichier XML ou dans le code afin que le mappage ne lève pas l'exception habituelle de « conversion invalide » ?

Était-ce utile?

La solution

Dans le fichier XML DBML, vous pouvez définir l'attribut Expression d'un élément Column sur quelque chose comme ceci :

 <Column Name="Table1.Amount" DbType="smallint" Type="System.Int32" 
         Expression="CAST(Table1.Amount as int)" />

Autres conseils

Légèrement hors sujet, mais c'est quelque chose que tout le monde devrait savoir lorsqu'on travaille avec le type Money dans SQLServer.

Vous ne voulez pas utiliser de double, vous souhaitez utiliser une décimale.

Un Double est un flottant long, et l'arithmétique à virgule flottante ne doit jamais être utilisée pour des calculs financiers.

Pensez-y, les fractions 1/3, 1/3 et 1/3 sont égales à 1.Cependant, lorsqu'il est exprimé sous forme de double, c'est-à-dire :

.3333 + .3333 + .3333 = .9999 et non 1.

Vous pensez peut-être que perdre un millième de centime est insignifiant, mais ce n’est pas le cas lorsque vous travaillez avec l’argent de quelqu’un d’autre.

Utilisez System.Decimal.

je suis presque sûr que Money correspond à System.Decimal

Vérifier ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top