2009-01-06 7 views
7

Ich habe eine gespeicherte Prozedur, die Ausgangsparameter wie folgt verwendet:Dezimalgenauigkeit und Skalierung mit LINQ und gespeicherte Prozedur mit Ausgabeparameter verloren

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

Wenn ich ziehen Sie die gespeicherte Prozedur auf den Designer, der resultierende Code in der designer.cs Datei endet die Präzision und die Skala zu verlieren, wie folgt aus:

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

Dies ist ein Problem, weil Dinge wie Produktpreise und Auftragssummen werden aufzurunden (dh 19.95 wird 20).

Jetzt kann ich die .cs-Datei manuell korrigieren, aber ich muss daran denken, es jedes Mal zu tun, wenn ein Update gemacht wird. Mache ich etwas falsch? Gibt es eine Möglichkeit, meine gespeicherte Prozedur zu ändern, die es LINQ ermöglicht, Präzision und Skalierung automatisch zu erkennen?

Antwort

2

Können Sie den Geldtyp und nicht den Dezial (18,2) -Typ verwenden?

+0

Interessant - Geld funktioniert. Irgendwelche Ideen warum? – Ethan

+0

Ich weiß nicht wirklich, warum dezimal nicht richtig funktioniert. Ich sollte etwas mehr damit spielen. Es tut uns leid. –

3

kann ich manuell die CS-Datei korrigieren, aber

Rechts, müssen Sie diesen Code in eine Teil-Klasse-Datei verschieben, bearbeiten Sie die Präzision der Zuordnung gibt, und von dem Designer der gespeicherten Prozedur löschen .

Dies gibt Ihnen eine manuelle Spezifikation im Code der Zuordnung zur gespeicherten Prozedur.

+0

GENIUS !!! Ich wünschte, ich hätte schon vor langer Zeit daran gedacht. – BG100

Verwandte Themen