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