SqlParameterクラスは、抽象基本クラスDbParameterを継承します。
public abstract bool IsNullable {get; set;}
したがって、プロパティSqlParameterのパブリック実装が必要です。IsNullableこのDbParameterクラスは、に含まれるすべてのデータベースパラメータ実装の基本クラスですSystem.Data。
次に、プロシージャまたは関数パラメータをnull許容またはnull不可として明示的に定義することを明示的に許可または拒否する他のDBMSがありSqlParameter.IsNullable、SqlParameterが他の.NETに共通のより一般的な共通データベースパラメータクラスおよびインターフェイスを実装しているためにのみ存在すると想定する必要があります。データベース相互作用クラス。
リフレクターを見ると、クラスは、「InstanceDescriptor」に変換されるときに値を渡す以外は、をSqlParameter使用しません。クラスがIsNullable何に使用されるかについては掘り下げませんでしたが、クラス、特にデータベースに送信されるパラメーターのSQL文字列に変換するメソッドを確認しました。InstanceDescriptorSqlCommandBuildParamListSqlParameterCollection
このBuildParamListメソッドは、をループしSqlParameterCollection、を使用しStringBuilderてパラメータ文字列を作成します。実装のどこにもプロパティまたは値BuildParamListを使用しません。IsNullable実際、への参照SqlParameter.IsNullableはSqlCommandクラスのどこにも表示されません。
SqlParameterオブジェクトを別のクラスに渡す内部/プライベートメソッドで参照を見逃した可能性がありますが、BuildParamListメソッドがそれを使用しない場合は、SQLに送信されるSQL文字列に影響を与えないため問題ありません。サーバ。
実行したテストケースに加えて、クラスの内容を調べることで、プロパティ値SqlCommandを安全に無視できるという結論が裏付けられます。SqlParameter.IsNullable
SQL Server側の面倒を見て、インターネットをすばやく検索して、明示的にnull許容/非null許容のプロシージャまたは関数パラメータを許可するDBMSを見つけることができるかどうかを確認しました。プロシージャに特定の属性を設定してnull値を渡す必要があると思われる、DB2の参照に遭遇したときに停止しました。この機能を備えた最新のRDBMSを私は知りません。また、検索しても他に何も得られませんでした。