Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据数据集更改自动更新数据库_C#_Wpf_Data Binding_Sql Server Ce - Fatal编程技术网

C# 如何根据数据集更改自动更新数据库

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对

我有一个数据库表,它加载到绑定到多个UIElement的DataTable对象,如DataGridComboBoxTextBox等的ItemsSource属性。是否有一种方法可以让我实现一个“看门狗”,不断检查DataTable或DataSet是否已更改,并在单独的线程上自动更新数据库


我的目标是消除客户端必须手动触发“保存”事件才能将这些更改传播到数据库的需要,并且数据库始终与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中的更改,并将更改传播到数据库。但我不知道该如何进行,即使是在概念上……嗯,这不是一项容易的任务。(同时,对于并行线程,您始终需要一种方法来知道表中的某些内容何时发生更改,而且这只能通过表本身引发的事件来完成)。关于线程的概念信息,我可以建议