Как ADO.NET использовать постоянный набор записей XML ADO для обновлений - PullRequest
0 голосов
/ 23 марта 2009

Я работаю над преобразованием .NET 2.0 многоуровневого клиент-серверного приложения. В настоящее время мы конвертируем серверную часть в .NET, но оставляем клиентские приложения в COM (VB6). Моя текущая работа сосредоточена на получении данных от / на отсоединенных клиентах на основе COM.
Текущая разрабатываемая версия использует наборы записей ADO (COM), сохраненные в виде XML и отправленные клиентам. Затем клиенты загружают XML в объект набора записей для доступа к данным для чтения / записи. Данные отправляются обратно на сервер в том же формате.
Получив постоянный набор записей XML для обновления, мы проводим довольно неаккуратный анализ для создания операторов UPDATE, которые проталкиваются через ADO.NET для соответствующего обновления исходной базы данных.

В (очень грубый) псевдокод:

adodb.recordset oRS = load(ADOXML)
for each rec in oRS
{
  string sSQL = "Update table set value = " + rec.ValueField + " where key = " + rec.KeyField
  executeNonQuery(sSQL)
}

* ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Фактическая логика далеко не такая грубая, но конечный результат тот же.

Мне интересно, есть ли у кого-нибудь лучшее решение, чтобы вернуть обновленные данные в базу данных ...?

Спасибо

Dan

1 Ответ

0 голосов
/ 23 марта 2009

Рассматривали ли вы использование TableAdapter для обновления данных после изменения всех строк?

Если у вас есть предварительно сконфигурированный SQLTableAdapter, в котором есть встроенные функции обновления, то, считав таблицу из XML в набор данных, вы можете затем вызвать функцию обновления из адаптера таблицы, чтобы обновить центральную БД для каждой строки таблицы. 1003 *

var tableadapter = new MyTableAdapter();

var dataset = new MyDataSet();

dataset.ReadXml("c:\myxmldata.xml");

foreach(var row in dataset.tables[0].rows)
{
   row.SetModified();
}

tableadapter.Update(dataset);
...