Frage

Ich arbeite mit LINQ für die erste Zeit, und wollte das Mapping zu arbeiten, wenn ich ein Geld-Typ in SQL, aber meine-domain-Objekt-Eigenschaft ist vom Typ double.Wie kann ich das Ausdrücken soll, in der XML-Datei oder im code, so dass die Zuordnung nicht werfen die üblichen "invalid cast" - Ausnahme?

War es hilfreich?

Lösung

In der DBML-XML-Datei, die Sie festlegen können, der Ausdruck Attribut einer Spalte element, so etwas wie dieses:

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

Andere Tipps

Etwas off-topic, aber das ist etwas, das jeder kennen sollte beim arbeiten mit dem Geld, das geben Sie in SQL Server.

Sie nicht wollen, zu verwenden eine doppelte, die Sie verwenden möchten eine Dezimalzahl.

Ein Double ist eine lange, float und floating-point Arithmetik, sollten nie verwendet werden, für finanzielle Berechnungen.

Denken Sie an dieses, der Fraktionen, 1/3, 1/3 und 1/3 gleich 1 ist.Jedoch, ausgedrückt als Doppel-ie:

.3333 + .3333 + .3333 = .9999 nicht 1.

Sie denken vielleicht, dass verlieren ein Tausendstel eines cents ist trivial, aber es ist nicht, wenn Sie Ihre Arbeit mit jemandem elses Geld.

Verwenden Sie System.Dezimal.

ziemlich sicher, dass Geld-Karten System.Dezimal

Überprüfen Sie hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top