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;
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top