2012-05-05 90 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()函数创建值的副本。这样可以安全地删除原始列表中的项目,同时仍然通过其值进行循环。