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

New transaction is not allowed because there are other threads running in the session issue

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.