0

null値を挿入したいSQLタイプsmallint(EFタイプInt16)の列がありますが、以下のコードを使用すると、nullをshortに変換できないというエラーが発生します。nullを挿入できるようにするステートメントの場合、この1行を取得するにはどうすればよいですか?

CollectionID = (ddlCollection.SelectedValue == "None") ? null  : Convert.ToInt16(ddlCollection.SelectedValue)
4

4 に答える 4

2

動作するコードは、次のようなnullablecnvertを実行することです。

CollectionID = (ddlCollection.SelectedValue == "None") ? (Nullable<Int16>)null : Convert.ToInt16(ddlCollection.SelectedValue)
于 2012-12-01T20:10:07.527 に答える
1

c#のデータベースにはnullの値があります:DBNull.Value

于 2012-12-01T19:28:46.413 に答える
0

最初の問題は、Entity FrameworkプロパティをNullableとしてマークするかCollectionID(EDMXを使用している場合)、CodeFirstとして宣言する必要があることです。short?Nullable<short>

次に、その列のデータベースタイプもnull許容としてマークされていることを確認する必要があります(smallint NULLSQL Serverのようなもの)。

編集:ああ、私は今問題を見ていると思います。に電話をかけてみてConvert.ToInt16くださいNullable<short>。三項演算子は側面にaを表示nullし、側面の値trueと互換性のないタイプを入力しているため、エラーが発生しています。nullfalse

CollectionID = (ddlCollection.SelectedValue == "None")
    ? (Nullable<short>)null 
    : (Nullable<short>)Convert.ToInt16(ddlCollection.SelectedValue)
于 2012-12-01T19:41:06.040 に答える
0

sqlcommandパラメーターで使用します

 if(ddl_collection.selectedvalue!="None")
   command.Parameters.AddWithValue("@CollectionID", Convert.ToInt16(ddlcollection.selectedValue));
else
    command.Parameters.AddWithValue("@CollectionID", DBNull.Value);
于 2013-10-18T08:31:26.983 に答える