2009-01-06 8 views
7

ho una stored procedure che utilizza parametri di uscita come questo:perso precisione decimale e scala utilizzando LINQ e stored procedure con parametri di output

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

Quando ho trascinare la procedura immagazzinata nella finestra di progettazione, il codice conseguente file designer.cs finisce per perdere la precisione e la scala, in questo modo:

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

questo è un problema, perché le cose come i prezzi dei prodotti e totali degli ordini vengono arrotondate per eccesso (cioè 19,95 diventa 20).

Ora, posso correggere manualmente il file .cs, ma dovrei ricordarmi di farlo ogni volta che viene effettuato un aggiornamento. Sto facendo qualcosa di sbagliato? C'è un modo per modificare la mia stored procedure che consentirebbe a LINQ di rilevare automaticamente la precisione e la scala?

risposta

2

È possibile utilizzare il tipo di denaro anziché il tipo decimale (18,2)?

+0

Interessante: il denaro funziona. Qualche idea, perché? – Ethan

+0

Non so davvero perché il decimale non funzioni correttamente. Dovrei giocarci ancora un po '. Scusate. –

3

posso correggere manualmente il file con estensione cs, ma

giusto, è necessario spostare il codice in un file di classe parziale, modificare la precisione della mappatura lì, e rilasciare la stored procedure dal progettista .

Fornisce una specifica manuale nel codice della mappatura alla procedura memorizzata.

+0

GENIO !!! Vorrei aver pensato di farlo secoli fa. – BG100

Problemi correlati