BindingSource.EndEdit () против TableAdapterManager.UpdateAll () - PullRequest
0 голосов
/ 18 января 2020

В. NET фреймворке для сохранения данных в элементе базы данных необходимо использовать:

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

Может кто-нибудь объяснить, почему? Что происходит за кулисами? Если .EndEdit () «применяет изменения к базовому источнику данных», почему недостаточно применить эти изменения?

1 Ответ

0 голосов
/ 18 января 2020

Достаточно «применить эти изменения» ... к источнику данных. Источник данных - DataTable, который является объектом в вашем приложении. Вызов UpdateAll - это то, что сохраняет изменения от DataTable - фактически все DataTables в вашей DataSet - в базе данных.

ADO. NET основано на отключенной модели , Это означает, что ваше приложение не связано напрямую с вашей базой данных. Используя ADO в VB6, изменения, которые вы внесли в Recordset, были внесены непосредственно в базу данных. Не так в ADO. NET. Когда вы звоните Fill, соединение с базой данных открывается, данные копируются из базы данных в DataTable, а затем соединение закрывается. Любые изменения, которые вы делаете локально, влияют только на эту локальную копию. Когда вы звоните Update или UpdateAll, соединение снова открывается и локальные изменения сохраняются в базе данных.

...