BindingSource.EndEdit()vs TableAdapterManager.UpdateAll()

问题描述 投票:0回答:1

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

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

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

c# vb.net dataset bindingsource tableadapter
1个回答
0
投票

将这些更改“应用到”数据源就足够了。数据源是DataTable,它是应用程序中的对象。 UpdateAll调用可以保存从DataTable(实际上是DataTables中的所有DataSet)到数据库的更改。

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

© www.soinside.com 2019 - 2024. All rights reserved.