2012-05-05 85 views
1

我想從MySQL數據庫中刪除一個任務。在這樣做時,我將刪除所有元素和boguses,如下所示。問題是,當它到達deleteboguses方法中的for-loop時,它會拋出一個異常「EntityCommandExecutionException」,爲什麼會這樣呢?我究竟做錯了什麼?從SQL數據庫中刪除

public static void DeleteAssignment(int id) 
    { 
     var deleteAssignment = from assignment in context.assignment 
           where assignment.id == id 
           select assignment; 
     DeleteElement(id); 
     foreach (assignment a in deleteAssignment) 
     { 
      context.assignment.DeleteObject(a); 
     } 
     context.SaveChanges(); 
    } 

    public static void DeleteElement(int id) 
    { 
     var deleteElement = from element in context.element 
          where element.assId == id 
          select element; 
     foreach(var e in deleteElement) 
     { 
      DeleteBoguses(e.id); 
      context.element.DeleteObject(e); 
     } 
     context.SaveChanges(); 
    } 

    public static void DeleteBoguses(int id) 
    { 
     var deleteBogus = from b in context.bogus 
          where b.elementId == id 
          select b; 
     foreach(var b in deleteBogus) 
     { 
      context.bogus.DeleteObject(b); 
     } 
     context.SaveChanges(); 
    } 
+1

您好! :)請發佈異常和與之相關的消息。 –

+0

System.Data.EntityCommandExecutionException未處理 消息=執行命令定義時發生錯誤。詳情請參閱內部例外。 – Drakthal

+1

什麼是內部異常? – Habib

回答

2

就像爲什麼你需要此修復程序,而這個問題在技術上仍開放的原因作出解釋。

IEnumerable,就像DeleteElement方法中的deleteElement變量一樣,不會接受用戶在枚舉值的同時從其集合中刪除項目。

要解決此問題,請使用ToList()函數創建值的副本。這樣可以安全地刪除原始列表中的項目,同時仍然通過其值進行循環。