。NET框架中,为了将数据保存到数据库项中,必须使用:
Me.Validate();
Me.CustomersBindingSource.EndEdit();
Me.TableAdapterManager.UpdateAll(Me.CustomerDataSet);
有人可以解释一下为什么吗?幕后发生了什么事?如果.EndEdit()“将更改应用于基础数据源”,为什么不足以应用这些更改?
将这些更改“应用到”数据源就足够了。数据源是DataTable
,它是应用程序中的对象。 UpdateAll
调用可以保存从DataTable
(实际上是DataTables
中的所有DataSet
)到数据库的更改。
ADO.NET基于断开连接的模型。这意味着您的应用程序没有直接连接到数据库。在VB6中使用ADO,您对Recordset
所做的更改直接在数据库中进行。在ADO.NET中不是这样。调用Fill
时,将打开与数据库的连接,将数据从数据库复制到DataTable
中,然后关闭该连接。您在本地进行的任何更改只会影响该本地副本。当您调用Update
或UpdateAll
时,将再次打开连接并将本地更改保存到数据库。