Estimados, tengo una aplicacion de escritorio en C# que trabaja con una base de datos access.
en mi modelo tengo las siguientes funciones
Código C#:
Ver originalpublic bool grabarET2C(EscenarioEntity e,List<ET2CEntity> lista)
{
bool flagBorrado = ed.borrar(e);
bool flag = false;
for (int i = 0; i < lista.Count; i++)
{
flag = ed.insertar(lista[i]);
}
return true;
}
internal bool insertar(ET2CEntity o)
{
string sql = "insert into ET2C (id_modo,id_tipo,id_sub_tipo,id_tipo_escenario,id_escenario,id_ee,id_contaminante,id_magnitud,valor_et2c,fecha_et2c,id_region) values " +
"('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}');";
sql = string.Format(sql,o.Id_modo
, o.Id_tipo
, o.Id_sub_tipo
, o.Id_tipo_escenario
, o.Id_escenario
, o.Id_ee
, o.Id_contaminante
, o.Id_magnitud
, o.Valor_et2c.ToString()
,o.Fecha_etc2
,o.Id_region
);
return executeNonSql(sql);
}
private bool executeNonSql(string sql)
{
using (DbCommand cmd = db.GetSqlStringCommand(sql))
{
int r = (int)db.ExecuteNonQuery(cmd);
return (r > 0);
}
}
como veran, nada muy elaborado ni muy terrible.
ahora el problema es que en mi LISTA a insertar tengo 55 mil registros.
los que se estan demorando en insertar cerca de 20 minutos. :(
ahora bien, mi consulta en la siguiente.
¿como logro mejorar el tiempo en la insercion?
se puede responsabilizar solo al motor access que es muy basico para manejar tantos inserts?
o es algo que se puede arreglar mejorando el algoritmo de insercion?
de antemano muchas grcias!!!