C# BindingSource.EndEdit()与TableAdapterManager.UpdateAll()的比较
在.NET framework中,为了将数据保存到数据库项中,必须使用:C# BindingSource.EndEdit()与TableAdapterManager.UpdateAll()的比较,c#,vb.net,dataset,bindingsource,tableadapter,C#,Vb.net,Dataset,Bindingsource,Tableadapter,在.NET framework中,为了将数据保存到数据库项中,必须使用: Me.Validate(); Me.CustomersBindingSource.EndEdit(); Me.TableAdapterManager.UpdateAll(Me.CustomerDataSet); 有人能解释一下为什么吗?幕后发生了什么?如果.EndEdit()将更改应用于基础数据源,为什么应用这些更改还不够?应用这些更改就足够了。。。到数据源。数据源是一个数据表,它是应用程序中的一个对象。UpdateAl
Me.Validate();
Me.CustomersBindingSource.EndEdit();
Me.TableAdapterManager.UpdateAll(Me.CustomerDataSet);
有人能解释一下为什么吗?幕后发生了什么?如果.EndEdit()将更改应用于基础数据源,为什么应用这些更改还不够?应用这些更改就足够了。。。到数据源。数据源是一个数据表
,它是应用程序中的一个对象。UpdateAll
调用将DataTable
中的更改保存到数据库中,实际上,数据集中的所有DataTables
NET基于一个断开连接的模型。这意味着您的应用程序没有直接连接到数据库。在VB6中使用ADO,对记录集所做的更改直接对数据库进行。在ADO.NET中并非如此。调用Fill
时,将打开与数据库的连接,将数据从数据库复制到DataTable
中,然后关闭连接。您在本地所做的任何更改仅影响该本地副本。当您调用Update
或UpdateAll
时,将再次打开连接,并将本地更改保存到数据库中。只需“应用这些更改”。。。到数据源。数据源是一个数据表
,它是应用程序中的一个对象。UpdateAll
调用将DataTable
中的更改保存到数据库中,实际上,数据集中的所有DataTables
NET基于一个断开连接的模型。这意味着您的应用程序没有直接连接到数据库。在VB6中使用ADO,对记录集所做的更改直接对数据库进行。在ADO.NET中并非如此。调用Fill
时,将打开与数据库的连接,将数据从数据库复制到DataTable
中,然后关闭连接。您在本地所做的任何更改仅影响该本地副本。调用Update
或UpdateAll
时,会再次打开连接,并将本地更改保存到数据库中