安装Navicat for MySQL,用于连接Mysq数据库,可以进行可视化操作
打开之后,新建连接,输入连接名(自定义),主机名(IP地址localhost也就是本地的IP地址,localhost=127.0.0.1),端口号(默认端口号3306),用户名(root最高的账号),密码,这里测试的是连接本地MySQL数据库
新建数据库,取名为test
在test数据库下建立三张表,student,teacher,grade
ORM全称为Object Relational Mapping ,即对象关系映射,作用在关系型数据库中和对象的一个映射。
//student实体 public class student { public string name; public int id; }
对应数据库:
表(student) | 对象(student) |
---|---|
标签(name,id) | 字段(name, id) |
数据(“张三”,1001) | 值(“张三”,1001) |
EF框架全称是Entity Framework ,是ADO.NET中一套支持开发面向数据的软件应用框架,相当于c#的一个ORM框架。
EF框架的三种开发模式:DataBase First 数据库优先,Model First 模型优先,Code First代码优先。
创建一个控制台项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxOAzb1y-1647763959187)(C:\Users\Administrator\Desktop\c#\控制台.PNG)]
取名demo
打开管理NuGet程序包
安装**Microsoft.EntityFrameworkCore,**Microsoft.EntityFrameworkCore.Abstractions,Pomelo.EntityFrameworkCore.MySql包
新建一个类,命名为MySQLDB;
打开MySQLDB类,输入以下代码:
using Microsoft.EntityFrameworkCore; //引入包 namespace demo { public class MySQLDB:DbContext //继承与DbContext { string connstring ="server=localhost;database=test;user=root;password=123456;charset=utf-8" protected override void OnConfiguring(DbContextOptionsBuider optionBuilder) { optionsBuilder.UseMySql(connstring); } } }
新建三个类,分别为student.cs,teacher.cs,grade.cs对应数据库中的三张表;在类中各添加它们对应的属性;
student类
namespace demo { public class student { public int StudentID{get;set;} public string userName{get;set;} public int TeacherID{get;set;} } }
teacher类
namespace demo { public class teacher { public int TeacherID{get;set;} public string TeacherName{get;set;} } }
grade类
namespace demo { public class grade { public int GradeID{get;set;} public float Chinese{get;set;} public float Math{get;set;} public float English{get;set;} public int StudentID{get;set;} } }
在MySQLDB类中,添加前三个类的DbSet
using Microsoft.EntityFrameworkCore; //引入包 namespace demo { public class MySQLDB:DbContext //继承与DbContext { string connstring = "server=localhost;database=test;user=root;password=123456;charset=utf-8"; protected override void OnConfiguring(DbContextOptionsBuider optionBuilder) { optionsBuilder.UseMySql(connstring); } } public DbSet<student>student{get;set;} public DbSet<teacher>teacher{get;set;} public DbSet<grade> grade{get;set;} }
建好之后的demo文件
打开main类,进行测试是否连接成功
internal class main { static void Main(string[] args) { using(var db = new MySQLDB) { Student stu = db.student.Find(1001); Console.WriteLine(stu.userName); } Console.ReadKey(); } }
运行结果:
1.添加学生信息
void StudentAdd(student student) { using(MySQLDB db = new MySQLDB()) { int teracher_value = 0; var query = db.student.Tolist(); for (int i=0; i< query.Count;i++) { if(query[i].StudentID == student.StudentID) { if(query[i].TeacherID == student.TeacherID) { teacher_value++; } Console.WriteLine("学号已存在,请重新输入"); return; } } if(teacher_value == 0) { Console.WriteLine("教师不存在,请重新输入") } db.student.Add(student); db.SaveChanges(); Console.WriteLine("添加成功"); } }
2.三张表连接查询
结果: