From 07bf07d4e86beab04676c5c58ae2da98a6aaf523 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8C=83=E4=BD=B3=E6=AC=A3?=
<14091193+fanjxin@user.noreply.gitee.com>
Date: Sun, 22 Dec 2024 22:08:02 +0800
Subject: [PATCH] =?UTF-8?q?12.20=E7=AC=94=E8=AE=B0=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...1\346\237\245-\346\213\223\345\261\225.md" | 170 ++++++++++++++++++
1 file changed, 170 insertions(+)
create mode 100644 "\350\214\203\344\275\263\346\254\243/20241220\345\242\236\345\210\240\346\224\271\346\237\245-\346\213\223\345\261\225.md"
diff --git "a/\350\214\203\344\275\263\346\254\243/20241220\345\242\236\345\210\240\346\224\271\346\237\245-\346\213\223\345\261\225.md" "b/\350\214\203\344\275\263\346\254\243/20241220\345\242\236\345\210\240\346\224\271\346\237\245-\346\213\223\345\261\225.md"
new file mode 100644
index 0000000..bc81fb4
--- /dev/null
+++ "b/\350\214\203\344\275\263\346\254\243/20241220\345\242\236\345\210\240\346\224\271\346\237\245-\346\213\223\345\261\225.md"
@@ -0,0 +1,170 @@
+# 笔记
+实体模型生成数据库
+1. 安装数据库驱动包`dotnet add package Microsoft.EntityFrameworkCore.Sqlserver`
+2. 创建数据库模型`xxxDbContext`所继承的类`DbContext`
+3. 创建数据库上下文
+4. 配置数据库连接
+5. 执行数据库操作
+6. 数据迁移
+ - 需要一个Design的依赖包;安装命令是:`dotnet add package Microsoft.EntityFrameworkCore.Design`
+ - 需要一个工具包;这个工具是dotnet-ef;全局安装命令是:`dotnet tool install --global dotnet-ef`
+ - 数据迁移命令:`dotnet ef migrations add InitCreate`
+ - 同步迁移文件更新到数据库:`dotnet ef database update`
+## 连接数据库的增删改查:
+### 新增:
+```js
+// 在新增的视图当中制一个新增网页后在控制器当中的post请求
+
+```
+### 删除
+```js
+//在删除的视图里制一个删除网页后在控制器中请求
+删除
+```
+### 修改
+```js
+//在修改的视图里制一个修改网页后在控制器中post请求
+@model Blog.Models.Blogs;
+
+```
+### 查找
+```js
+//在列表的视图里制一个查找页面后在控制器中get请求
+
+```
+ `我想创建一个简单的增删改查的具体步骤`
+ ***eg:创建一个有关学生成绩: StudetManger(但是这里举例的是Student)***
+ 先进行:
+ **a.搭建一个MVC项目(-o 命名)`dotnet new mvc -o StudentManger`**
+ **b.在Properties里改端口`5000`**
+ **c.在Views里的_ViewStart.cshtml改`Layout=null`**
+## 在Models 当中
+```js
+// 1:创建与学生有关的Student,Score,Coure的学生信息和分数信息,还有课程信息;
+// 但是在所有模型获取之前 都要进行 命名空间:
+namespace StudentManger(但是这里举例的是Student).
+// 学生信息
+public class Students
+{
+ ///
+/// id值属于主键
+///
+ public int Id { get ;set ;}
+ // 获取学号
+ ///
+/// 学生编号
+///
+ public string StudentCode{get;set;}=null!;
+ public string StudentName{get;set;}=null!;
+ // 如果是string:默认类型情况下不允许为null;
+ // string?:可空引用类型 表示字符串类型,但是允许为null,可以明确的知道 这个属性可以是null,
+ // 可以帮助免灾的空引用异常;!!!
+ ///
+/// 昵称
+///
+ public string? Nickname{get;set;}
+}
+
+// 课程信息
+public class Course
+{ ///
+/// 主键 编号
+///
+ public int Id {get;set;}
+ ///
+/// 课程名称
+///
+ public string CourseName {get;set;}=null!;
+
+}
+// 分数信息
+
+public class Score
+ {
+ // 分数模型当中 获取更多的id值 以方便获取 分数值
+ ///
+/// 主键
+///
+ public int Id{get; set;}
+ // 外键 学生编号
+ public int StudentId{get; set;}
+// 课程编号
+ public int CourseId{get; set;}
+ // float 可以使用但是并不准确
+ // 分数
+ public decimal Scores {get;set;}
+}
+```
+
+```js
+// 然后创建一个 ScoreDbContext 用于存储每个表的数据库
+// 引用
+using Microsoft.EntityFrameworkCore;
+namespace Student.Models;
+public class StudentDbContext : DbContext
+{
+ public DbSet Students { get; set; } = null!;
+}
+
+// 如果在这里重载那肯定出错 因为确实对DbSet的引用
+
+//
+```
+### 出现错误!!
+**出现了在使用dotnet add package Microsoft.Entity 时**
+有!!!!
+ ***没有可用于包“Microsoft.Entity”的版本。***的错误!!
+ 解决:
+**在进行下一步之前 要先安装所继承的DbContext(在这个项目当中)**
+```js
+// 终端中
+dotnet add package Microsoft.EntityFrameworkCore.Sqlserver
+```
+
+4. 在StudentDbContext.cs里写配置代码
+```js
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+ {
+ //这里调用DbContext类型中的原始OnConfiguring方法:以初始化一些原始配置
+ base.OnConfiguring(optionsBuilder);
+ var conString = $"server=.\\SQLEXPRESS;database=StudentDb;uid=sa;pwd=123456;TrustServerCertificate=true;";
+ optionsBuilder.UseSqlServer(conString);
+ }
+```
+5. 生成迁移文件
+```js
+//如何数据迁移???
+-命令是:dotnet ef migrations add 文件名
+ * 前提条件:
+ 1. 需要一个Design的依赖包;安装命令是:
+ dotnet add package Microsoft.EntityFrameworkCore.Design
+ 2. 需要一个工具包;这个工具是dotnet-ef;全局安装命令是:dotnet tool install --global dotnet-ef
+ 3. 程序不能有编译错误;可以使用(dotnet build)命令来排查编译错误
+ 4. 程序不能处于运行状态
+- 快捷键`Win+R`打开cmd输入命令`services.msc`选择`SQL Server(SQLEXPRESS)`点击运行数据库===>最后在同步迁移文件到数据库
+(将上一步生成的迁移文件同步到数据库;命令是:dotnet ef database update)
+```
+## 在控制器当中
+***有几个要创建的表 就有多少个控制器***
+在分数Course.cshtml控制器中,先定义数据库上下文字段
+```js
+ private readonly StudentDbContext _db;
+ public StudentController()
+ {
+ _db=new StudentDbContext();
+ }
+```
+3. 在控制器中定义返回列表方法
+```js
+
+```
+5. 在而控制器中建增删改的返回类型方法(改;删根据Id)
+## 在Views里
+1. 根据控制器连接视图
+
--
Gitee