2008-08-19 5 views
1

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 la propriété de mon objet de domaine est de type double. Comment puis-je exprimer cela dans le fichier XML, ou dans le code de sorte que le mappage ne jette pas l'exception habituelle "cast invalide"?Mappage LINQ vers SQL de l'argent au double

Répondre

1

, vous pouvez définir l'attribut d'expression d'un élément de la colonne à quelque chose comme ceci:

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

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

Vous ne voulez pas utiliser un double, vous voulez utiliser un nombre décimal. Un double est un flottant long et l'arithmétique à virgule flottante ne doit jamais être utilisée pour les calculs financiers.

penser à cela, les fractions 1/3, 1/3 et 1/3 égale 1. Toutefois, lorsqu'il est exprimé sous forme de double-à-dire:

0,3333 + 0,3333 + 0,3333 0,9999 = pas 1

Vous pouvez penser que perdre un millième de centime est trivial, mais ce n'est pas quand vous travaillez avec quelqu'un qui manque d'argent.

Utilisez System.Decimal.

Questions connexes