ISNULLABLE機能のDbParameter?
-
21-08-2019 - |
質問
私は非常にADO.Netのパラメータで働いていません。私は(のSqlClientをモデル)カスタム.NETデータプロバイダを作成し、のDbParameterから継承私のパラメータのクラス、中ISNULLABLEプロパティを実装する必要がありますよ。私のデータプロバイダは、ストアドプロシージャをサポートしていませんので、私は唯一の入力(代替スタイル)パラメータをサポートされます。
MSDNドキュメントは述べ、ISNULLABLEの機能にやや不明確である「パラメータがnull値を受け入れるかどうかを示す値を取得または設定します。」グーグルは、彼らが期待していたとしてfalseにISNULLABLEを設定すると、NULL値をパラメータを使用してますからそれらを禁止していないことを言って、ISNULLABLEが何をするかについて混乱し、多くの人々を折り返すます。
これに基づき、私は、パラメータの値がnullにすることができないかどうか、おそらくISNULLABLEプロパティは、ストアドプロシージャでの使用に関係する、そしてかどうかを、ストアドプロシージャのパラメータがNULL可能であることを考えています。
私はストアドプロシージャを持っていないので、その場合には、私の実装はちょうどすることができます:
public override bool IsNullable { get { return false; } set {} }
誰かがパラメータを使用してコードを書くに経験した場合、私はそれを感謝し、ISNULLABLEのSqlParameterの実装がどのように動作するかを確認するためにいくつかのテストコードの周りいじるすることを避けるためにISNULLABLEを説明することができます。
解決
ISNULLABLEプロパティは情報です。コードの一部は、パラメータを作成し、他が実際にそれを使用するときに便利です。例えば、パラメータは自動的にNULL値が受け入れられる可能性があるか否かを見ることができるようにプログラマに有用である場合にはデータベースに由来する可能性があります。
このはISNULLABLEプロパティの私の理解です。私は実際にこれが実際に正しい「証明」することを任意のドキュメントを知りません。
<時間>このビューをサポートするそのドキュメントの状態のOracle Oracle.DataAccess.Client.OracleParameter
クラスに、:
ISNULLABLE
このプロパティはサポートされていません。
そして、MSドライバまたは引用されたOracleドライバのいずれかを介して、Oracleの10または11または12とインターフェースするとき、このプロパティの値は無関係であるという事実である。
他のデータベース上の行動は、もちろん異なる場合があります。