Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

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

J'avais l'habitude de faire face au même sssue. Si l'application threadée utilise le même objet de contexte pour tous les threads, nous rencontrons ce genre de problèmes. Créez des objets de contexte distincts pour chaque thread. Vous ajoutez peut-être un peu plus de charge sur votre RAM, mais cela donne de la clarté sur les états des entités dans Context.

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());