New transaction is not allowed because there are other threads running in the session hatası çözümü

Bu hata oluştuğunda Entity Framework " An error occurred while starting a transaction on the provider connection. See the inner exception for details." hatasını fırlatıyor iç hataya baktığımızda "New transaction is not allowed because there are other threads running in the session " bu hatayı görüyoruz. Sebebi foreach veya for döngüsü içinde değişiklik kaydetme işlemi yaptığımızda fırlatıyor. (context.SaveChanges())

Çözümü:

Kayıt işlemini döngülerin dışına almak 

Bugün sebebini bilmediğim bir durumdan aynı hatayı aldım ama döngü kullanmamıştım ya da kullandığım yeri bulamadım. O yüzden şöyle bir şey yaptım. Lazım olan yeri ayrı bir context içine alarak işlemi tamamlayabildim.

 

 

foreach(var a in data)
{

       a.name = "Kodstrap";

}

 

context.SaveChanges();

 

using(kodDbEntities db = new kodDbEntities())
{
     //Kodlar
}

 

Yani döngü kullanmadan böyle bir şey denk gelirse bu şekilde işlemi devam edebilirsiniz.