我希望你能帮帮我
我正在编写一个 ASP.NET 应用程序,我必须在数据表中循环超过 70,000 个数据行才能更新数据库记录(每个数据表行都有更新数据库记录的信息)。我的想法是将表分解为 10,000 行表并创建一些异步方法来更新数据库(每个表一个异步方法)。我需要确保表上的每条记录都是更新的,因此所有内容都被包装到一个 TransacionScope 块中。
问题是,当我运行 Page.ExecuteRegisteredAsyncTasks() 时,我得到一个超时异常,告诉我获得连接的最大允许时间已经完成。
我的代码如下
using (TransactionScope transaccion = new TransactionScope(TransactionScopeOption.RequiresNew, new TimeSpan(0, 120, 0)))
{
//Validando momentos
clConsultoraCompensationPlan.asignaValoresFinales(dtConsultoraCompensationPlan,
compensation_plan, usuario,pagina);
transaccion.Complete();
}
private static void asignaValoresFinales(DataTable dtConsultorasMaster, clCompensationPlan compensation_plan, int usuario,Page pagina)
{
List<DataTable> lista_tablas = new List<DataTable>();
//Separadno la tabla en 30 tablas
foreach(IEnumerable<DataRow> renglones in LinqExtensions.Split(dtConsultorasMaster.AsEnumerable(), 50))
{
lista_tablas.Add(renglones.CopyToDataTable());
}
foreach (DataTable dtConsultoraCompensationPlan in lista_tablas)
{
AsignaValoresFinalesAsincrono tarea = new AsignaValoresFinalesAsincrono();
PageAsyncTask tarea_asincrona = new PageAsyncTask(tarea.OnBegin, tarea.OnEnd, tarea.OnTimeout, new ContenedorAsignaValoresFinalesAsincrono(dtConsultoraCompensationPlan,compensation_plan,usuario), true);
pagina.RegisterAsyncTask(tarea_asincrona);
}
pagina.ExecuteRegisteredAsyncTasks();
}
为了运行我使用单例实例的查询,这会影响什么吗?有没有更好的方法来完成这个任务而不是拆分表和多线程?
提前致谢