2

私は ADO.Net のパラメーターをあまり扱っていません。カスタム .Net データ プロバイダー (SqlClient をモデルに) を作成しており、DbParameter から継承するパラメーター クラスに IsNullable プロパティを実装する必要があります。私のデータ プロバイダーはストアド プロシージャをサポートしないため、入力 (置換スタイル) パラメーターのみをサポートします。

MSDN のドキュメントでは、IsNullable の機能について、「パラメーターが null 値を受け入れるかどうかを示す値を取得または設定する」と述べており、かなり不明確です。IsNullable を false に設定しても、パラメーターを使用することを禁止するわけではないと言って、IsNullable の機能について多くの人が混乱していることがわかります。

これに基づいて、おそらくIsNullableプロパティはストアドプロシージャでの使用に関連し、ストアドプロシージャのパラメーターがnull可能かどうかであり、パラメーター値がnullにできるかどうかではないと考えています。

その場合、ストアド プロシージャがないため、実装は次のようになります。

        public override bool IsNullable { get { return false; } set {} }

SqlParameter の IsNullable の実装がどのように機能するかを確認するためにいくつかのテスト コードをいじる必要がないように、パラメーターを使用してコードを記述した経験のある人が IsNullable を説明できるとありがたいです。

4

1 に答える 1

3

IsNullableプロパティは情報です。コードの一部がパラメーターを作成し、別の部分が実際にそれを使用する場合に役立ちます。たとえば、パラメーターがデータベースから自動的に導出される場合があります。その場合、プログラマーはnull値が受け入れられる可能性が高いかどうかを確認できると便利です。

これは、IsNullableプロパティについての私の理解です。これが実際に正しいことを「証明」するドキュメントを実際に知りません。


このビューをサポートするのは、OracleOracle.DataAccess.Client.OracleParameterクラスの実装であり、ドキュメントには次のように記載されています。

IsNullable

このプロパティはサポートされていません。

また、MSドライバまたは引用されたOracleドライバを介してOracle 10、11、または12とインターフェイスする場合、このプロパティの値は関係ありません。

もちろん、他のデータベースでの動作は異なる場合があります。

于 2009-07-04T13:00:27.497 に答える