no puede insertar el valor DBNULL en el servidor SQL
-
22-09-2019 - |
Pregunta
¿Por qué me sale este error?
Object cannot be cast from DBNull to other types.
Al insertar valor nulo para un tipo de datos numérico en SQL Server 2005
Aquí está mi código,
if (MeasurementTr.Visible == true)
{
materialIn.measurementId = Convert.ToInt64(DlMeasurement.SelectedValue.ToString());
}
else
{
materialIn.measurementId = Convert.ToInt64(DBNull.Value);
}
Editar
¿Es este derecho ??
materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
Solución
No se puede convertir a DBNull.Value
Int64
como sus intentos de código que hacer en Convert.ToInt64
. medios DBNull.Value
"desconocidos" o "inexistentes" y por lo tanto no hay conversión lógica a cualquier otro tipo de datos.
Si la instancia materialIn
es alguna forma de DataRow
inflexible de tipos, tendrá un método SetMeasurementIdNull
, que es lo que necesita para su uso. Si está utilizando LINQ a SQL o EF, que no es necesario para hacer frente a DBNull
en absoluto, debe en su lugar simplemente materialIn.measurementId = null
escritura.
Otros consejos
Debido a que Object cannot be cast from DBNull to other types.
Así que lo que hay que hacer es comprobar el valor de DBNull
.
materialIn.measurementId = == DlMeasurement.SelectedValue DBNull.Value? 0: Convert.ToInt64 (DlMeasurement.SelectedValue.ToString ());
DBNull no convierte a un valor Int64. Usted tendrá que utilizar un int anulable y luego almacenar nulo en el valor o hacer algo con el valor nulo para representar tales como 0 que puede ser almacenada en su propiedad.