栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

基于c#的 EntityFramework搭建

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于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:UsersAdministratorDesktopc#控制台.PNG)]

取名demo

打开管理NuGet程序包

安装**Microsoft.EntityFrameworkCore,**Microsoft.EntityFrameworkCore.Abstractions,Pomelo.EntityFrameworkCore.MySql,EntityFramework包

新建一个类,命名为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));
        }
    }
}

新建三个类,分别为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 DbSetstudent{get;set;}
    
    public DbSetteacher{get;set;}
    
    public DbSet 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.三张表连接查询

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号