From 967871614270c3cfafc3795579780bb1a4b48ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=9C=E4=BB=95=E9=B9=8F?= <2293215729@qq.com> Date: Sun, 29 Dec 2024 21:31:59 +0800 Subject: [PATCH] 20241229 --- ...40\351\231\244\347\254\224\350\256\260.md" | 34 +++++ ...36\350\241\250\347\254\224\350\256\260.md" | 116 ++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 "\345\206\234\344\273\225\351\271\217/2024.12.23-\344\274\252\345\210\240\351\231\244\347\254\224\350\256\260.md" create mode 100644 "\345\206\234\344\273\225\351\271\217/2024.12.25-\350\277\236\350\241\250\347\254\224\350\256\260.md" diff --git "a/\345\206\234\344\273\225\351\271\217/2024.12.23-\344\274\252\345\210\240\351\231\244\347\254\224\350\256\260.md" "b/\345\206\234\344\273\225\351\271\217/2024.12.23-\344\274\252\345\210\240\351\231\244\347\254\224\350\256\260.md" new file mode 100644 index 0000000..c1e6841 --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.12.23-\344\274\252\345\210\240\351\231\244\347\254\224\350\256\260.md" @@ -0,0 +1,34 @@ +# 伪删除 +### 1. 伪删除的概念 +- 伪删除是一种数据管理技术,它将数据标记为"已删除"状态,而不是从数据库中物理删除。 +- 这种方法保留了数据的完整性,便于未来恢复或审计。 + +### 步骤 +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)); + +### 5. 数据库交互 +- 数据库查询时,使用 `isDeleted = false` 或 `isActive = true` 条件来排除已伪删除的数据。 +- 更新操作时,设置 `isDeleted = true` 而不是执行 `DELETE` 语句。 + diff --git "a/\345\206\234\344\273\225\351\271\217/2024.12.25-\350\277\236\350\241\250\347\254\224\350\256\260.md" "b/\345\206\234\344\273\225\351\271\217/2024.12.25-\350\277\236\350\241\250\347\254\224\350\256\260.md" new file mode 100644 index 0000000..2ede4b0 --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.12.25-\350\277\236\350\241\250\347\254\224\350\256\260.md" @@ -0,0 +1,116 @@ +## 操作-连三张表 +```js +设计数据库: + +1. 成绩表 + /// + /// 主键Id + /// + public int Id { get; set; } + + /// + /// 学生Id,外键 + /// + public int StudentId { get; set; } + + /// + /// 课程Id,外键 + /// + public int CourseId { get; set; } + + /// + /// 学生的课程成绩 + /// + public decimal Scores { get; set; } + +2. 课程表 + /// + /// 主键Id + /// + public int Id { get; set; } + + /// + /// 课程名称 + /// + public string CourseName { get; set; } = null!; + +3. 学生表 + /// + /// 主键Id + /// + public int Id { get; set; } + + /// + /// 学生编号 + /// + public string StudentCode { get; set; } = null!; + + /// + /// 学生姓名 + /// + public string StudentName { get; set; } = null!; + + /// + /// 昵称 + /// + public string? Nickname { get; set; } + + /// + /// 是否删除,true为已经删除,false为没有删除 + /// + /// + public bool IsDeleted { get; set; } = false; + + public bool IsActived { get; set; } = true; + + public DateOnly Birthday { get; set; } + + public int Age { get; set; } + + public char Sex { get; set; } + + +``` + + + +```js +现在有三个表分别为成绩表,课程表,学生信息表,现在要连接三张表形成一张新的表,只显示三张表中的部分内容 +``` +```js + public IActionResult Index() + { + // 查出所有的成绩记录 + var scores = _db.Scores.ToList(); + // 查出所有的学生记录 + var students = _db.Students.Where(x => !x.IsDeleted).ToList(); + // 查出所有的课程记录 + var courses = _db.Courses.ToList(); + + // 遍历成绩记录 + var res = scores.Select(x => + { + // 找到和当前成绩记录中的学生Id匹配的学生信息 + var tmpStudent = students.FirstOrDefault(z => x.StudentId == z.Id); + // 找到和当前成绩记录中的课程Id匹配的课程信息 + var tmpCourse = courses.FirstOrDefault(z => x.CourseId == z.Id); + + // 分别处理学生、课程没有找到的情况 + var tmpStudentName = tmpStudent == null ? "" : tmpStudent.StudentName; + var tmpCourseName = tmpCourse == null ? "" : tmpCourse.CourseName; + + // 返回新的,包含学生姓名和课程名称的信息 + var res = new + { + x.Id, + x.StudentId, + StudentName = tmpStudentName, + x.CourseId, + CourseName = tmpCourseName, + x.Scores + }; + return res; + }); + return View(res); + } +``` \ No newline at end of file -- Gitee