stored procedimiento parametros mapear llamar funcion framework ejecutar devuelve con columnas almacenado agregar c# linq linq-to-sql

c# - parametros - Pérdida de precisión y escala decimal usando LINQ y procedimiento almacenado con parámetros de salida



llamar procedimiento almacenado linq c# (2)

Puedo corregir manualmente el archivo .cs, pero

Correcto, debe mover este código a un archivo de clase parcial, editar la precisión del mapeo allí y soltar el procedimiento almacenado del diseñador.

Esto le da una especificación manual en el código de la asignación al procedimiento almacenado.

Tengo un procedimiento almacenado que usa parámetros de salida como este:

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

Cuando arrastro el procedimiento almacenado en el diseñador, el código resultante en el archivo designer.cs termina perdiendo precisión y escala, así:

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

Esto es un problema, porque cosas como precios de productos y totales de pedidos se redondean (es decir, 19.95 se convierte en 20).

Ahora, puedo corregir manualmente el archivo .cs, pero tendría que recordar hacerlo cada vez que se realiza una actualización. ¿Estoy haciendo algo mal? ¿Hay alguna forma de cambiar mi procedimiento almacenado que permita a LINQ detectar automáticamente la precisión y la escala?


¿Puedes usar el tipo de dinero en lugar del tipo decial (18,2)?