У меня возникают проблемы с объединением/импортом данных ADO.NET 2.0. Мне нужно обновить/вставить данные из одной общей таблицы в другую таблицу, при этом обе таблицы поддерживают одинаковую схему. Следующий код отлично работает локально, но не вносит изменений в базу данных:
OleDbDataAdapter localDA = loadLocalData();
OleDbDataAdapter hostedDA = loadHostedData();
DataSet dsLocal = new DataSet();
localDA.Fill(dsLocal);
DataSet dsChanges = new DataSet();
hostedDA.Fill(dsChanges);
dsLocal.Tables[0].Merge(dsChanges.Tables[0],false);
localDA.Update(dsLocal.Tables[0]);
То же самое верно и для этого фрагмента кода:
OleDbDataAdapter localDA = loadLocalData();
OleDbDataAdapter hostedDA = loadHostedData();
DataSet dsLocal = new DataSet();
localDA.Fill(dsLocal);
DataSet dsChanges = new DataSet();
hostedDA.Fill(dsChanges);
foreach (DataRow changedRow in dsChanges.Tables[0].Rows)
{
if (recordExists(dsLocal.Tables[0], changedRow["ID"]))
{
}
else
{
dsLocal.Tables[0].ImportRow(changedRow);
}
}
localDA.Update(dsLocal.Tables[0]);
Когда я просмотрел свойство RowState для измененных/добавленных строк, они остаются «неизменными». Я хочу по возможности избегать сопоставления данных со столбцами, что мне, возможно, придется сделать, используя метод NewRow() и изменяя существующую строку.