Nuestro equipo de expertos pasados muchos días de trabajo y recopilación de de información, hallamos la respuesta, esperamos que te sea de utilidad en tu trabajo.
Solución:
Estoy pensando que su parámetro de salida regresa con un valor DBNull. Agregue un cheque para eso como este
var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id");
if(!(outputParam is DBNull))
DataTO.Id = Convert.ToInt64(outputParam);
Sospecho que la línea
DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));
está causando el problema. ¿Es posible que el op_Id
el valor se establece en null por el procedimiento almacenado?
Para protegerse contra él, use el Convert.IsDBNull
método. Por ejemplo:
if (!Convert.IsDBNull(dataAccCom.GetParameterValue(IDbCmd, "op_Id"))
DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));
else
DataTO.Id = ...some default value or perform some error case management
Tienes que comprobar DBNull
no null
. Además, dos de sus tres ReplaceNull
Los métodos no tienen sentido. double
y DateTime
no son anulables, por lo que comprobarlos para null
siempre será false
…
Agradecemos que quieras favorecer nuestro quehacer ejecutando un comentario y puntuándolo te damos la bienvenida.