2016-03-25 22 views
3

Her bir döngü için bir varlık içinden Entity Framework SaveChanges()'u aramaya çalıştığımda bir sorun yaşıyorum. İstisna, "bir başka iş parçasında zaten var iken yeni bir işlem" diyor. Linq sorgusundan haberim. Bu yüzden verileri iç döngünün tamamlanması üzerine kaydetmek istiyorum. Teşekkürler.İç döngüdeki() iç sistemlerdeki kaydetme() hatalarını kaydetmeye çalışırken hata oluştu

foreach (keyword kwd in lst) 
{   
    foreach (DataRow row in dt.Rows) 
    { 
     //processing 
    } 
    //i need saving here.    
    db.SaveChanges(); 
} 
//not here. 

cevap

3

sizin hataya neden foreach (keyword kwd in lst) Bu hat. IQueryable ertelenmiş yürütmeyi kullanır, bu nedenle sonuçları yinelediğinizde sorgu yürütülür. Durumunuzda, foreach döngüsündedir. Ancak verileri getirirken, onu değiştirmeye ve veritabanına kaydetmeye başladınız -> işlemlerde hata. Çözüm, sorguyu, önceden ToList:

foreach (keyword kwd in lst.ToList()) 
{   
    foreach (DataRow row in dt.Rows) 
    { 
     //processing 
    } 
    //i need saving here.    
    db.SaveChanges(); 
} 
arayarak yürütmeye zorlamaktır.
İlgili konular