diff --git "a/\346\226\271\345\207\244\344\270\271/20241223(\344\274\252\345\210\240\351\231\244).md" "b/\346\226\271\345\207\244\344\270\271/20241223(\344\274\252\345\210\240\351\231\244).md" new file mode 100644 index 0000000000000000000000000000000000000000..9e0964155dd227e0cd2a3eac4220ecb21d9f614b --- /dev/null +++ "b/\346\226\271\345\207\244\344\270\271/20241223(\344\274\252\345\210\240\351\231\244).md" @@ -0,0 +1,28 @@ +伪删除 +## 概念 +伪删除的概念: +伪删除通常指的是在数据库中并不真正删除一条记录,而是通过修改记录的状态来标记这条记录为“已删除”。这样做的好处是可以保留数据以供将来的查询和审计,同时在应用层面隐藏这些被标记为删除的记录 +。 +1. 先在表中添加一条字段,并赋值 + + //表示是否被删除,默认值为false + public bool IsDeleted{get;set;}=false; + +2. 在控制器删除操作中,添加以下代码 + + //删除(伪删除) + public IActionResult Delete2(int id){ + var s=_db.Course.FirstOrDefault(x=>x.Id==id); + if(s==null){ + return NotFound(); + } + //需将remove改为update,如果删除了则修改IsDeleted的值 + s.IsDeleted=true; + _db.Course.Update(s); + _db.SaveChanges(); + return RedirectToAction("Index"); + } +3. 在控制器页面的action方法中,进行一下操作 + + //表示筛选没有被删除新的信息 + return View(_db.Course) ----> return View(_db.Course.Where(x=>x.IsDeleted!=true)); \ No newline at end of file diff --git "a/\346\226\271\345\207\244\344\270\271/20241225(\345\210\244\346\226\255\346\230\257\345\220\246\345\220\253\346\234\211\346\226\260\346\226\271\346\263\225).md" "b/\346\226\271\345\207\244\344\270\271/20241225(\345\210\244\346\226\255\346\230\257\345\220\246\345\220\253\346\234\211\346\226\260\346\226\271\346\263\225).md" new file mode 100644 index 0000000000000000000000000000000000000000..2b7e44aed54220c69e8d0ffc069dc5ef7d545cdc --- /dev/null +++ "b/\346\226\271\345\207\244\344\270\271/20241225(\345\210\244\346\226\255\346\230\257\345\220\246\345\220\253\346\234\211\346\226\260\346\226\271\346\263\225).md" @@ -0,0 +1,44 @@ +### 伪删除的实现方式:在数据库中添加一个标记字段,用于表示记录是否被“删除”。这个字段通常是一个整数类型,比如flag或DeletionStateCode,其中某个值(如0)表示记录是活跃的,而另一个值(如1)表示记录已被“删除” +。 + +### 代码示例:在ASP.NET MVC框架中,伪删除可以通过修改实体的状态码来实现。例如,通过检查Not参数,如果Not不为null,则将用户的状态码设置为1,表示用户已被“删除” +1. 定义显示页面的方法 + + public IActionResult Index(string su){ + //检查该字符串是否为空,如果是则返回没有被删除的列表视图 + if(string.IsNullOrEmpty(su)){ + return View(_db.Course.Where(x=>x.IsDeleted!=true)); + } + //浏筛选没有被删除的信息 + var res=_db.Course.Where(x=>!x.IsDeleted); + //从中筛选包含su的信息 + var list=res.Where(x=>x.Id.ToString().Contains(su)||x.CourseName.Contains(su)).ToList(); + return View(list); + } + + 或 + public IActionResult Index(string su){ + IEnumerablelist; + if(string.IsNullOrEmpty(su)){ + return View(_db.Course); + }else{ + //浏筛选没有被删除的信息 + var res=_db.Course.Where(x=>!x.IsDeleted); + //从中筛选包含su的信息 + var list=res.Where(x=>x.Id.ToString().Contains(su)||x.CourseName.Contains(su)).ToList(); + } + return View(list); + + } +2. 创建一个私有的静态方法,接受一个Course对象和一个字符串keyword作为参数,并返回一个布尔值。 + + private static bool Judge(Course stu,string keyword){ + //改属性如果为true,则返回false,及表示被删除的信息不显示 + if(stu.IsDeleted){ + return false; + } + if(stu.Id.ToString().Contains(keyword)||stu.CourseName.Contains(keyword)){ + return true; + } + return false; + } \ No newline at end of file