c# - 从 SQL 数据库中删除

标签 c# mysql linq

我正在尝试从 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/

相关文章:

MySQL - 在 WHERE 子句中使用 COUNT(*)?

php - 如何根据查询的结果执行/返回查询的一部分(使用 Eloquent 或原始 SQL)?

c# - 以编程方式设置默认代理而不是使用 app.config

c# - 使用 WriteableBitmap 的缓冲区大小不足?

mysql - 1114(HY000): The table is full

c# - System.Collections.IEnumerable 的 LINQ

C# 组列表并将计数放入列表变量

c# - LINQ2SQL 选择订单并跳过/接受

c# - 如何处理firebase短动态链接成功结果

c# - 在窗口边界限制/移动上下文菜单(右键单击)