sql >> Base de Datos >  >> RDS >> Sqlserver

System.Data.Entity.Infrastructure.CommitFailedException:C# Multithreading y SQL Server 2012

Solía ​​​​enfrentarme al mismo problema. Si la aplicación con subprocesos usa el mismo objeto de contexto para todos los subprocesos, enfrentamos este tipo de problemas. Cree objetos de contexto separados para cada subproceso. Es posible que agregue más carga en su RAM pero da claridad sobre estados de entidades en contexto.

List<Task> tasks = new List<Task>();
foreach (var item in list)
{
   ObjectContext oContext = new ObjectContext("MyConnection");
   Task t = Task.Factory.StartNew(() =>
   {
      this.Update(item,oContext);
   });
   tasks.Add(t);
}

Task.WaitAll(tasks.ToArray());