DataSet オブジェクトには、Disposed、Initialized、MergeFailedの 3 つのイベントが用意されています。
MergeFailed イベント
DataSet
オブジェクトの最も一般的に使用されるイベントはMergeFailed
であり、マージされるDataSet
オブジェクトのスキーマが競合しているときに発生します。 これは、ターゲットとソースの DataRow が同じ主キー値を持ち、 EnforceConstraints プロパティが true
に設定されている場合に発生します。 たとえば、マージされるテーブルの主キー列が 2 つの DataSet
オブジェクト内のテーブル間で同じである場合、例外がスローされ、 MergeFailed
イベントが発生します。 MergeFailedEventArgs イベントに渡されるMergeFailed
オブジェクトには、2 つのConflict オブジェクト間のスキーマの競合を識別するDataSet
プロパティと、競合しているテーブルの名前を識別する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 イベント
Initialized イベントは、DataSet
コンストラクターがDataSet
の新しいインスタンスを初期化した後に発生します。
IsInitializedが初期化を完了した場合、true
プロパティはDataSet
を返します。それ以外の場合は、false
を返します。 BeginInitの初期化を開始する DataSet
メソッドは、IsInitializedを false
に設定します。 EndInitの初期化を終了する DataSet
メソッドは、true
に設定します。 これらのメソッドは、別のコンポーネントで使用されている DataSet
を初期化するために Visual Studio デザイン環境で使用されます。 通常、コード内で直接使用することはありません。
Disposed イベント
DataSet
は、 MarshalByValueComponent メソッドと DisposeDisposed イベントの両方を公開する クラスから派生します。 Disposed イベントは、コンポーネントで破棄されたイベントをリッスンするイベント ハンドラーを追加します。 Disposed メソッドが呼び出されたときにコードを実行する場合は、DataSet
のDispose イベントを使用できます。 Dispose は、 MarshalByValueComponentによって使用されるリソースを解放します。
注
DataSet
オブジェクトとDataTable
オブジェクトはMarshalByValueComponentから継承され、リモート処理用のISerializable インターフェイスがサポートされます。 これらは、リモートで使用できる唯一の ADO.NET オブジェクトです。 詳細については、「 .NET リモート処理」を参照してください。
DataSet
で使用できるその他のイベントについては、「DataTable イベントの処理」および「DataAdapter イベントの処理」を参照してください。