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)?