Frage

Warum ich diesen Fehler?

Object cannot be cast from DBNull to other types.

, wenn ich Null-Wert für einen numerischen Datentyp in SQL Server eingefügt 2005

Hier ist mein Code,

 if (MeasurementTr.Visible == true)
    {
        materialIn.measurementId = Convert.ToInt64(DlMeasurement.SelectedValue.ToString());
    }
    else
    {
        materialIn.measurementId = Convert.ToInt64(DBNull.Value);
    }

Bearbeiten :

Ist das richtig ??

 materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
War es hilfreich?

Lösung

Sie können nicht DBNull.Value zu Int64 als Ihr Code versucht konvertieren in Convert.ToInt64 zu tun. DBNull.Value bedeutet „unbekannt“ oder „nicht existent“, und daher gibt es keine logische Umwandlung in jeden anderen Datentyp.

Wenn die materialIn Instanz irgendeine Form von stark typisierte DataRow ist, wird es ein SetMeasurementIdNull Verfahren hat, das ist, was Sie verwenden müssen. Wenn Sie Linq to SQL oder EF verwenden, sollten Sie nicht mit DBNull überhaupt befassen müssen, würden Sie stattdessen nur Schreib materialIn.measurementId = null.

Andere Tipps

Weil die Object cannot be cast from DBNull to other types.

Also, was Sie tun müssen, ist, den Wert für DBNull zu überprüfen.

  

materialIn.measurementId = DlMeasurement.SelectedValue == DBNull.Value? 0: Convert.ToInt64 (DlMeasurement.SelectedValue.ToString ());

DBNull konvertiert nicht zu einem Int64. Sie müssen ein Nullable-int verwenden und dann null speichern im Wert oder etwas mit dem Wert null stellen, wie 0, die in Ihrer Eigenschaft gespeichert werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top