C# 如何根据数据集更改自动更新数据库
我有一个数据库表,它加载到绑定到多个UIElement的DataTable对象,如DataGrid、ComboBox、TextBox等的ItemsSource属性。是否有一种方法可以让我实现一个“看门狗”,不断检查DataTable或DataSet是否已更改,并在单独的线程上自动更新数据库C# 如何根据数据集更改自动更新数据库,c#,wpf,data-binding,sql-server-ce,C#,Wpf,Data Binding,Sql Server Ce,我有一个数据库表,它加载到绑定到多个UIElement的DataTable对象,如DataGrid、ComboBox、TextBox等的ItemsSource属性。是否有一种方法可以让我实现一个“看门狗”,不断检查DataTable或DataSet是否已更改,并在单独的线程上自动更新数据库 我的目标是消除客户端必须手动触发“保存”事件才能将这些更改传播到数据库的需要,并且数据库始终与DataSet/DataTable中的数据同步。还请建议这是一种好的做法还是有更好的替代方法。DataTable对
我的目标是消除客户端必须手动触发“保存”事件才能将这些更改传播到数据库的需要,并且数据库始终与DataSet/DataTable中的数据同步。还请建议这是一种好的做法还是有更好的替代方法。DataTable对象有许多在行数据更改时触发的事件。
您可以使用RowChanged/RowChanging、rowdelected/RowDeleting 可以用这种简单的方法为RowChangeing事件添加事件处理程序
yourTable.RowChanging += new DataRowChangeEventHandler(yourRowChangingHandler);
然后添加处理程序
private void yourRowChangingHandler(object sender, DataRowChangeEventArgs e)
{
Console.WriteLine("Action={0}", e.Action);
}
其中是一个描述操作的枚举,但我如何不断“侦听”数据集中的更改?嗯,我不确定您是否理解正确。当您将事件处理程序附加到您感兴趣的每个“自动更新”表时,您不会“侦听”任何内容,当您的用户更改绑定到dataset/datatable的gridview/combobox/控件中的任何内容时,框架将触发该事件。因为与更改DataTables/dataset关联的事件太多,我不希望在每个事件处理程序中检查RowChanging,而是希望有一个单独的并行线程,它不断地侦听DataTable中的更改,并将更改传播到数据库。但我不知道该如何进行,即使是在概念上……嗯,这不是一项容易的任务。(同时,对于并行线程,您始终需要一种方法来知道表中的某些内容何时发生更改,而且这只能通过表本身引发的事件来完成)。关于线程的概念信息,我可以建议