Undo changes done by last database save

时间:2015-05-04 19:57:39

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

When I press a button, jQuery uses ajax to delete an item, but it is possible for me to make another function that can "undo" the deletion that just took place?

My delete controller

    [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");
    }

1 个答案:

答案 0 :(得分:1)

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

  • 您可以创建一个将在一定时间内运行的任务,而不是立即删除。说,10秒。 10秒钟,您将显示&#34;撤消&#34;将取消该任务的按钮,以运行SaveChanges()
  • 您可以缓存您在临时表中删除的项目并将其还原
  • 您可以在表格中添加IsDeleted位,并使用该位表示该记录已被删除,可以随意翻转为&#34;取消删除&#34;。