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