小工具知识网

当前位置: 首页 > 行业知识 > Net8 EFCore Mysql 连接

行业知识

Net8 EFCore Mysql 连接

2026-11-07 19:03:43 来源:互联网转载

一、安装插件

  • Pomelo.EntityFrameworkCore.MySql (这���要选8.0.0以上版本低版本不支持.net8)

    二、配置数据库连接串

     appsettings.json 中配置数据库连接串

    "ConnectionStrings": {  "Connection": "server=172.18.2.183;port=3306;database=students;uid=root;pwd=123456;CharSet=utf8"}

    三、添加实体类Student和数据库上下文

    新建 Entities 目录,在,根据表及字段,在目录下新建 Student 实体类,在类上加  [Table("student")] 表名、属性上加[Column("id")] 字段名等与表对应,代码如下:

    using System.ComponentModel.DataAnnotations.Schema;namespace Snai.Mysql.Entities{    [Table("students")]    public class Student    {        [Column("id")]        public int ID { get; set; }        [Column("name")]        public string Name { get; set; }    }}

    在根目录下加上 DataAccess 目录做为数据库操作目录,在该目录下加上 Base 目录做数据库上下文目录

    在 Base 目录下新建 SqlContext 上下文类,继承 DbContext 类,通过构造函数注入数据库连接,添加 DbSet 实体属性,代码如下:

    using Microsoft.EntityFrameworkCore;using Snai.Mysql.Entities;namespace Server.DataAccess.Base{    public class SqlContext : DbContext    {        public SqlContext(DbContextOptions options)            : base(options)        { }        public DbSet Student { get; set; }    }}

    在DataAccess目录下创建Interface和Implement文件夹分别为数据库对应数据的接口和实现。

    接口定义:

    using Server.Mysql.Entities;namespace Server.DataAccess.Interface{    public interface IStudentDao    {        //插入数据        bool CreateStudent(Student student);        //取全部记录        IEnumerable GetStudents();        //取某id记录        Student GetStudentByID(int id);        //根据id更新整条记录        bool UpdateStudent(Student student);        //根据id更新名称        bool UpdateNameByID(int id, string name);        //根据id删掉记录        bool DeleteStudentByID(int id);    }}

    实现:

    using Server.DataAccess.Base;using Server.DataAccess.Interface;using Server.Mysql.Entities;namespace Server.DataAccess.Implement{    public class StudentDao : IStudentDao    {        private SqlContext _context;        public StudentDao(SqlContext context)        {            _context = context;        }        //插入数据        public bool CreateStudent(Student student)        {            _context.Student.Add(student);            return _context.SaveChanges() > 0;        }        //取全部记录        public IEnumerable GetStudents()        {            return _context.Student.ToList();        }        //取某id记录        public Student? GetStudentByID(int id)        {            return _context.Student.SingleOrDefault(s => s.ID == id);        }        //根据id更新整条记录        public bool UpdateStudent(Student student)        {            _context.Student.Update(student);            return _context.SaveChanges() > 0;        }        //根据id更新名称        public bool UpdateNameByID(int id, string name)        {            var state = false;            var student = _context.Student.SingleOrDefault(s => s.ID == id);            if (student != null)            {                student.Name = name;                state = _context.SaveChanges() > 0;            }            return state;        }        //根据id删掉记录        public bool DeleteStudentByID(int id)        {            var student = _context.Student.SingleOrDefault(s => s.ID == id);            _context.Student.Remove(student);            return _context.SaveChanges() > 0;        }    }}

    依赖注入

    在Program.cs中写入

    string? sqlConnection = builder.Configuration.GetConnectionString("Connection");if (sqlConnection != null) {    builder.Services.AddDbContext(options =>    {        var serverVersion = ServerVersion.AutoDetect(sqlConnection);  //mysql版本: {8.2.0-mysql}        options.UseMySql(sqlConnection, serverVersion);    });}builder.Services.AddScoped(); //对于同一个请求返回同一个实例

    设计表

    Controller调用

    private IStudentDao _iStudentDao;public TestController(IStudentDao iStudentDao)  //构造函数中添加{    _iStudentDao = iStudentDao;}//调用测试方法创建public void TestCreate(){    Student student = new Student();    student.ID = 1;    student.Name = "在下没有钱";    _iStudentDao.CreateStudent(student);}

    运行结果:

上一篇:手机浏览网站模板全攻略,轻松上手,技巧体验一网打尽!

下一篇:告白轻松到手,告白下载攻略,让你的情感不再难以启齿!