当前位置:   article > 正文

基于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;  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

对应数据库:

表(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.MySqlEntityFramework
在这里插入图片描述

新建一个类,命名为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, ServerVersion.AutoDetect(connstring));
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

新建三个类,分别为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;}
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

teacher类

namespace demo
{
    public class teacher
    {
        public int TeacherID{get;set;}
        
        public string TeacherName{get;set;}
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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;}
        }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在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;}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

建好之后的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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

运行结果:

在这里插入图片描述

三、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("添加成功");
    }
    
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.三张表连接查询
在这里插入图片描述

结果:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/253482
推荐阅读
相关标签
  

闽ICP备14008679号