基于c#的 EntityFramework搭建
作者:互联网
一、数据库的建立
安装Navicat for MySQL,用于连接Mysq数据库,可以进行可视化操作
打开之后,新建连接,输入连接名(自定义),主机名(IP地址localhost也就是本地的IP地址,localhost=127.0.0.1),端口号(默认端口号3306),用户名(root最高的账号),密码,这里测试的是连接本地MySQL数据库
新建数据库,取名为test
在test数据库下建立三张表,student,teacher,grade
二、EF框架简介
1、什么是ORM框架
ORM全称为Object Relational Mapping ,即对象关系映射,作用在关系型数据库中和对象的一个映射。
//student实体
public class student
{
public string name;
public int id;
}
对应数据库:
表(student) | 对象(student) |
---|---|
标签(name,id) | 字段(name, id) |
数据(“张三”,1001) | 值(“张三”,1001) |
2、什么是EF框架
EF框架全称是Entity Framework ,是ADO.NET中一套支持开发面向数据的软件应用框架,相当于c#的一个ORM框架。
EF框架的三种开发模式:DataBase First 数据库优先,Model First 模型优先,Code First代码优先。
三、EF框架的搭建
创建一个控制台项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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();
}
}
运行结果:
三、Linq的链表查询
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.三张表连接查询
结果:
标签:set,get,c#,EntityFramework,int,MySQLDB,student,public,搭建 来源: https://blog.csdn.net/cjvhjv/article/details/123615242