DataSet オブジェクトには、Disposed、Initialized、MergeFailedの 3 つのイベントが用意されています。
MergeFailed イベント
DataSet
オブジェクトの最も一般的に使用されるイベントはMergeFailed
であり、マージされるDataSet
オブジェクトのスキーマが競合しているときに発生します。 これは、ターゲットとソースの DataRow が同じ主キー値を持ち、 EnforceConstraints プロパティが true
に設定されている場合に発生します。 たとえば、マージされるテーブルの主キー列が 2 つの DataSet
オブジェクト内のテーブル間で同じである場合、例外がスローされ、 MergeFailed
イベントが発生します。
MergeFailed
イベントに渡されるMergeFailedEventArgs オブジェクトには、2 つのDataSet
オブジェクト間のスキーマの競合を識別するConflict プロパティと、競合しているテーブルの名前を識別するTable プロパティがあります。
次のコード フラグメントは、 MergeFailed
イベントのイベント ハンドラーを追加する方法を示しています。
AddHandler workDS.MergeFailed, New MergeFailedEventHandler( _
AddressOf DataSetMergeFailed)
Private Shared Sub DataSetMergeFailed( _
sender As Object,args As MergeFailedEventArgs)
Console.WriteLine("Merge failed for table " & args.Table.TableName)
Console.WriteLine("Conflict = " & args.Conflict)
End Sub
workDS.MergeFailed += new MergeFailedEventHandler(DataSetMergeFailed);
private static void DataSetMergeFailed(
object sender, MergeFailedEventArgs args)
{
Console.WriteLine("Merge failed for table " + args.Table.TableName);
Console.WriteLine("Conflict = " + args.Conflict);
}
初期化されたイベント
Initialized イベントは、DataSet
コンストラクターがDataSet
の新しいインスタンスを初期化した後に発生します。
DataSet
が初期化を完了した場合、IsInitialized プロパティはtrue
を返します。それ以外の場合は、false
を返します。
DataSet
の初期化を開始する BeginInit メソッドは、IsInitializedを false
に設定します。
DataSet
の初期化を終了する EndInit メソッドは、true
に設定します。 これらのメソッドは、別のコンポーネントで使用されている DataSet
を初期化するために Visual Studio デザイン環境で使用されます。 コードでは一般的に使用しません。
Disposed イベント
DataSet
は、 MarshalByValueComponent メソッドと DisposeDisposed イベントの両方を公開する クラスから派生します。
Disposed イベントは、コンポーネントで破棄されたイベントをリッスンするイベント ハンドラーを追加します。
Dispose メソッドが呼び出されたときにコードを実行する場合は、DataSet
のDisposed イベントを使用できます。
Dispose は、 MarshalByValueComponentによって使用されるリソースを解放します。
注
DataSet
オブジェクトとDataTable
オブジェクトはMarshalByValueComponentから継承され、リモート処理用のISerializable インターフェイスがサポートされます。 これらは、リモートで使用できる唯一の ADO.NET オブジェクトです。 詳細については、「 .NET リモート処理」を参照してください。
DataSet
で使用できるその他のイベントについては、「DataTable イベントの処理」および「DataAdapter イベントの処理」を参照してください。