首页 > 解决方案 > BindingSource.EndEdit() 与 TableAdapterManager.UpdateAll()

问题描述

在 .NET 框架中,为了将数据保存到数据库项中,必须使用:

Me.Validate();
Me.CustomersBindingSource.EndEdit();
Me.TableAdapterManager.UpdateAll(Me.CustomerDataSet);

有人可以解释我为什么吗?幕后发生了什么?如果 .EndEdit() “将更改应用到基础数据源”,为什么应用这些更改还不够?

标签: c#vb.netdatasetbindingsourcetableadapter

解决方案


将这些更改应用到数据源就足够了。数据源是 a DataTable,它是您的应用程序中的一个对象。该UpdateAll调用将更改从该更改DataTable(实际上,所有更改都DataTables在您的更改中)保存DataSet到数据库中。

ADO.NET 基于断开连接的模型。这意味着您的应用程序没有直接连接到您的数据库。在 VB6 中使用 ADO,您对 aRecordset所做的更改是直接对数据库进行的。在 ADO.NET 中并非如此。当您调用 时Fill,将打开与数据库的连接,将数据从数据库复制到 a 中DataTable,然后关闭连接。您在本地进行的任何更改都只会影响该本地副本。当您调用UpdateorUpdateAll时,连接会再次打开,并且本地更改会保存到数据库中。


推荐阅读