Tengo problemas con la combinación/importación de datos de ADO.NET 2.0. Necesito actualizar/insertar datos de una tabla genérica a otra tabla con ambas tablas manteniendo un esquema idéntico. El siguiente código funciona muy bien a nivel local, pero no realizar cambios en la base de datos:DataTable.Merge y DataTable.ImportRow no cambia RowState
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]);
Lo mismo es cierto con este fragmento de código:
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]);
Cuando miraba a la propiedad RowState para cambiar/anexa filas permanecen "sin cambios". Quiero evitar el mapeo de datos de las columnas si es posible, que es lo que debo hacer usando el método NewRow() y modificando una fila existente.
Puedo encontrar una solución que modifique el RowState cuando use ImportRow. El siguiente fragmento de código funcionará: dsLocal.Tables [0] .ImportRow (changedRow); dsLocal.Tables [0] .Rows [dsLocal.Tables [0] .Rows.Count - 1] .SetAdded(); Sin embargo, esto solo funciona en filas anexas y no actualiza las filas. ¡Cualquier idea sobre fusión sería muy útil! –