ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于c#的 EntityFramework搭建

2022-03-20 16:32:22  阅读:190  来源: 互联网

标签:set get c# EntityFramework int MySQLDB student public 搭建


一、数据库的建立

安装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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有