小编Sid*_*ity的帖子

实体框架; 如何在foreach循环中处理异常并继续迭代

当我使用以下代码遍历foreach时,它成功捕获发生的第一个异常并将id添加到我的错误列表中.在循环的所有后续迭代中,它将继续捕获先前的异常.

如何正确捕获异常并撤消或清除失败的DeleteObject请求,以便可以执行后续删除.

public ActionResult Delete(int[] ListData)
{
    List<int> removed = new List<int>();
    List<int> error = new List<int>();
    Item deleteMe;
    foreach (var id in ListData)
    {
        deleteMe = this.getValidObject(id);
        if (deleteMe == null)
        {
            error.Add(id);
            continue;
        }

        try
        {
            this.DB.Items.DeleteObject(deleteMe);
            this.DB.SaveChanges();
            removed.Add(id);
        }
        catch (DataException ex)
        {
            // revert change to this.DB.Items?
            error.Add(id);
        }
    }
    if (error.Count > 0)
    {
        return Json(new { Success = false, Removed = removed, Error = error });
    }
    return Json(new { Success = true, Removed …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework

9
推荐指数
1
解决办法
1873
查看次数

标签 统计

asp.net-mvc ×1

c# ×1

entity-framework ×1