当前位置: 首页 > news >正文

dotnet core webapi EF 连接mysql数据库

目录

1、安装 MySQL 的 EF Core 提供程序

2、创建 DbContext 和模型类

3、在 Program.cs 或 Startup.cs 中配置服务

4、在 appsettings.json 中配置连接字符串

5、使用示例

6、异常处理


在 .NET Core 中使用 Entity Framework Core (EF Core) 连接 MySQL 数据库。

1、安装 MySQL 的 EF Core 提供程序

使用 NuGet 安装 Pomelo.EntityFrameworkCore.MySql(推荐),它是社区支持最广泛的 MySQL EF Core 提供程序:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Pomelo.EntityFrameworkCore.MySql

2、创建 DbContext 和模型类

public class User
{public int Id { get; set; }public string Name { get; set; }
}

示例 DbContext:

public class MyDbContext : DbContext
{public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) {}public DbSet<User> Users { get; set; }
}

3、在 Program.csStartup.cs 中配置服务

var builder = WebApplication.CreateBuilder(args);// 配置 MySQL 数据库连接
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<MyDbContext>(options =>options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));var app = builder.Build();

4、在 appsettings.json 中配置连接字符串

{"ConnectionStrings": {"DefaultConnection": "server=localhost;port=3306;database=testdb;user=root;password=yourpassword;"}
}

5、使用示例

// 添加数据
using (var context = new SchoolDbContext())
{var student = new Student{Name = "张三",Age = 18,Grade = "高三"};context.Students.Add(student);await context.SaveChangesAsync();
}// 查询数据
using (var context = new SchoolDbContext())
{var students = await context.Students.Where(s => s.Age >= 18).ToListAsync();
}// 更新数据
using (var context = new SchoolDbContext())
{var student = await context.Students.FirstOrDefaultAsync(s => s.Id == 1);if (student != null){student.Name = "李四";await context.SaveChangesAsync();}
}// 删除数据
using (var context = new SchoolDbContext())
{var student = await context.Students.FirstOrDefaultAsync(s => s.Id == 1);if (student != null){context.Students.Remove(student);await context.SaveChangesAsync();}
}

6、异常处理

Method 'get_LockReleaseBehavior' in type 'Pomelo.EntityFrameworkCore.MySql.Migrations.Internal.MySqlHistoryRepository' from assembly 'Pomelo.EntityFrameworkCore.MySql, Version=8.0.3.0, Culture=neutral, PublicKeyToken=2cc498582444921b' does not have an implementation.

这个报错是由于Pomelo.EntityFrameworkCore与Microsoft.EntityFrameworkCore版本不匹配导致。Pomelo.EntityFrameworkCore.MySql 8.x 版本中未实现 Microsoft.EntityFrameworkCore 9.x 中的 get_LockReleaseBehavior 方法。

解决办法,升级Pomelo.EntityFrameworkCore,或者降级Microsoft.EntityFrameworkCore。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/253572.html

相关文章:

  • 洪千武—华为海外HRBP
  • Ant Design Charts入门教程
  • 【Datawhale组队学习202506】零基础学爬虫 01 初始爬虫
  • 17.group by分组统计
  • 华为OD-2024年E卷-中文分词模拟器[200分] -- python
  • 1、做中学 | 一年级上期 Golang简介和安装环境
  • 基于Android的打印系统的设计与实现
  • PHP vs Python (Flask/Django) vs Java (SpringBoot) vs Vue:2024全栈技术终极对决
  • 最大公约数
  • UML建模
  • Ubuntu 20.04离线安装Nvidia-docker
  • 2025年全国技术贸易创新实践案例:AI编辑助手平台助力“一带一路”数字媒体产业高质量发展
  • MySQL-多表查询深度解析与实战指南
  • 如何计算股票复权因子与复权行情
  • iOS端网页调试 debug proxy策略:项目中的工具协同实践
  • 2025年渗透测试面试题总结-渗透测试工程师(题目+回答)
  • 正态分布:AI大模型中的概率统计基石
  • [特殊字符] NarratoAI:AI驱动的短剧解说视频自动化生成工具整合包
  • ChromaDB深度技术研究报告
  • 分治算法之归并排序
  • MybatisPlus深入学习
  • Ubuntu 降低待机功耗
  • EPLAN P8 2.9 如何使用.step格式3D文件绘制3D安装布局图
  • 3D制作与数字媒体领域的技术突破
  • powershell 获取 用户及进程列表
  • C++map和set类(简介)
  • BitsAndBytes(简称 BnB)是一个用于“压缩”大语言模型的工具包
  • Pyspark中的int
  • 19. 双向链表
  • 【Pandas】pandas DataFrame unstack