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