次の方法で共有


.NET Framework アプリケーションでのデータセットの入力中に制約を無効にする

Note

データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 テクノロジが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。

データセットに制約 (外部キー制約など) が含まれる場合、それらは、データセットに対して実行される操作の順序に関連するエラーを発生させる危険性があります。 たとえば、親レコードを読み込む前に子レコードを読み込むと、制約違反となり、エラーが発生する場合があります。 子レコードを読み込んだ直後に、関連する親があるかどうかが制約でチェックされ、エラーが生成されます。

一時的に制約を中断する機構がない場合は、レコードを子テーブルに読み込もうとするたびにエラーが生成されます。 データセットのすべての制約を中断する別の方法として、BeginEdit プロパティおよび EndEdit プロパティを使用できます。

Note

制約をオフにすると、検証イベント (ColumnChangingRowChanging など) は生成されなくなります。

更新制約をプログラムによって中断するには

  • 次の例は、データセットでの制約チェックを一時的に無効にする方法を示しています。

    dataSet1.EnforceConstraints = false;
    // Perform some operations on the dataset
    dataSet1.EnforceConstraints = true;
    

データセット デザイナーを使って更新制約を中断するには

  1. データセット デザイナーでご自分のデータセットを開きます。 詳細については、「チュートリアル: データセット デザイナーを使用してデータセットを作成する」を参照してください。

  2. [プロパティ] ウィンドウで、 EnforceConstraints プロパティを falseに設定します。