撤消上次数据库保存所做的更改

Chr*_*sen 5 c# asp.net-mvc entity-framework asp.net-mvc-4

当我按下一个按钮时,jQuery使用ajax删除一个项目,但是我可以创建另一个可以"撤消"刚发生的删除的功能吗?

我删除控制器

    [HttpPost]
    public void DeleteProject(int Id)
    {
        var Item = from a in db.Project
                   where a.ProjectId.Equals(Id)
                   select a;

        Project SelectedProject = Item.FirstOrDefault();
        ICollection<ProjectProfile> Profiles = SelectedProject.ProjectProfile;
        ICollection<Member> Members = SelectedProject.Member;

        db.Member.RemoveRange(Members);
        db.ProjectProfile.RemoveRange(Profiles);

        db.Project.Remove(SelectedProject);
        db.SaveChanges();

        RedirectToAction("Index", "Projects");
    }
Run Code Online (Sandbox Code Playgroud)

DLe*_*Leh 1

有几种方法可以做到这一点。总的来说,它有点过于宽泛,无法提供明确的解决方案,但这里有一些想法:

  • 您可以创建一个在一定时间内运行的任务来执行删除操作,而不是立即删除。说,10秒。在 10 秒钟内,您将显示一个“撤消”按钮,该按钮将取消该任务的运行SaveChanges()
  • 您可以将要删除的项目缓存在临时表中并恢复它
  • 您可以在表中添加一点IsDeleted,并用它来表示该记录已被删除,可以随意翻转该记录以“取消删除”。