我正在尝试从 MySQL 数据库中删除分配。在这样做的同时,我将删除所有元素和伪造的元素,如下所示。问题是,当它到达 deleteboguses 方法中的 for 循环时,它会抛出异常“EntityCommandExecutionException”,知道为什么要这样做吗?我做错了什么?
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();
}
最佳答案
只是为了解释您需要此修复的原因,这个问题在技术上仍然是开放的。
IEnumerable
,就像 DeleteElement
方法中的 deleteElement
变量一样,将不接受用户在枚举值时从其集合中删除项目.
要解决这个问题,您可以使用 ToList()
函数来创建值的副本。这样可以安全地删除原始列表中的项目,同时仍循环遍历其值。
关于c# - 从 SQL 数据库中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463188/