编程语言
首页 > 编程语言> > 基于c#的 EntityFramework搭建

基于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.AbstractionsPomelo.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