该DataSet对象提供三个事件:Disposed和InitializedMergeFailed。
MergeFailed 事件
DataSet
对象最常用的事件是 MergeFailed
,该事件在合并的 DataSet
对象架构发生冲突时会被触发。 当目标和源 DataRow 具有相同的主键值并且属性 EnforceConstraints 设置为 true
时,将发生这种情况。 例如,如果合并表的主键列在两个 DataSet
对象中的表中相同,将会抛出异常并且会触发 MergeFailed
事件。 传递给MergeFailedEventArgs事件的MergeFailed
对象包含两个属性:一个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 事件发生在 DataSet
构造函数初始化新实例 DataSet
之后。
如果该IsInitialized属性已完成初始化,则true
返回DataSet
;否则返回 false
。 方法 BeginInit 开始对 DataSet
进行初始化,并将 IsInitialized 设置为 false
。
EndInit 方法(用于结束 DataSet
的初始化)将它设置为 true
。 Visual Studio 设计环境使用这些方法来初始化由其他组件使用的DataSet
。 你不会经常在代码中使用它们。
释放事件
DataSet
派生自 MarshalByValueComponent 类,该类同时拥有 Dispose 方法和 Disposed 事件。
Disposed 事件添加了一个事件处理程序以侦听组件上已释放的事件。 如果您希望在调用 Disposed 方法时执行代码,可以使用 DataSet
的 Dispose 事件。
Dispose 释放由 MarshalByValueComponent 使用的资源。
注释
DataSet
和DataTable
对象继承自MarshalByValueComponent并支持ISerializable接口用于远程处理。 这些是唯一可以远程处理的 ADO.NET 对象。 有关详细信息,请参阅 .NET 远程处理。
有关使用 a DataSet
时可用的其他事件的信息,请参阅 处理 DataTable 事件 和 处理 DataAdapter 事件。