質問

私はこのエラーが出るのはなぜ?

Object cannot be cast from DBNull to other types.

私は、SQL Serverでは、数値データ型にNULL値を挿入したとき2005

ここに私のコードは、

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

編集

??この権利です。

 materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
役に立ちましたか?

解決

あなたはDBNull.Valueに行うにはあなたのコードの試みとしてInt64Convert.ToInt64を変換することはできません。 DBNull.Value手段「不明」又は「存在しない」、したがって、他のデータ型への論理的な変換が存在しない。

materialInインスタンスが強く型付けされたDataRowのいくつかのフォームがある場合、それはあなたが使用するために必要なものであるSetMeasurementIdNull方法を、持っています。あなたはSQLまたはEFへのLINQを使用している場合は、すべてのDBNullに対処する必要はありません、あなたはだけでなく、書き込みmaterialIn.measurementId = nullでしょう。

他のヒント

そのObject cannot be cast from DBNull to other types.ので、

だから、あなたが何をする必要があるかDBNullの値を確認することです。

  

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

はDBNullはInt64型に変換しません。あなたのプロパティに格納することができるヌル0などあなたが表現するために値をNULL可能int型を使用して、値にヌルを保存したり、何かをする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top