基于.NET CORE 3.1的WEB API通过EF CORE连接MySQL

2023-11-13

基于.NET CORE 3.1的WEB API通过EF CORE连接MySQL

注:本文不采用CodeFirst,不使用迁移。

1、准备好一个WEB API项目,可以看我之前的文章。
2、准备好一个MySQL数据库并创建表。
3、引用nuget包Pomelo.EntityFrameworkCore.MySql和Microsoft.EntityFrameworkCore
3、在Models文件夹下新建实体

在这里插入图片描述

public class T_People
    {
        [Key]
        [Required]
        public int Id { get; set; }

        public string Name { get; set; }
    }
4、新建一个DbContext对象,如果表有多主键,需要放开注释那行

在这里插入图片描述

public partial class EFTestContext : DbContext
    {
        public EFTestContext()
        {
        }

        public EFTestContext(DbContextOptions<EFTestContext> options)
            : base(options)
        {
        }

        public virtual DbSet<T_People> T_People { get; set; } = null!;

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {

            //modelBuilder.Entity<T_Type_Label>().HasKey(t => new { t.Type, t.Label });
            base.OnModelCreating(modelBuilder);
        }
    }
5、在appsetting.json添加数据库配置信息

在这里插入图片描述

"ConnectionStrings": {
    "MySQLConnection": "server=rm-172.12.18.131;port=3306;uid=root;pwd=123456;database=eftest"
  }
6、在Startup类里添加上下文对象

在这里插入图片描述

var sqlConnectionString = Configuration.GetConnectionString("MysqlConnection");
            services.AddDbContext<EFTestContext>(options => options.UseMySql(sqlConnectionString));
7、EF的使用,在我们的api里使用依赖注入通过ef连接数据库

在这里插入图片描述

[Route("api/[controller]/[action]")]
    [ApiController]
    public class EFController : ControllerBase
    {
        EFTestContext FTestContext;

        public EFController(EFTestContext FTestContext)
        {
            this.FTestContext = FTestContext;
        }


        [HttpGet]
        public string Test()
        {
            return FTestContext.T_People.FirstOrDefault().Name;
        }
    }
8、不通过依赖注入,通过简单工厂也可以实现DBContext的调用

创建DBCreate类
在这里插入图片描述

public static class DBCreate 
    {
        private static IServiceProvider serviceProvider;
        public static void RegistServiceProvider(IServiceProvider provider)
        {
            serviceProvider = provider;
        }
        public static DBContext CreateContext()
        {
            return serviceProvider.CreateScope().ServiceProvider.GetService<DBContext>();
        }
    }

在这里插入图片描述
Startup里注册

DBCreate.RegistServiceProvider(app.ApplicationServices);

API里EF的使用有所不同
在这里插入图片描述

[Route("api/[controller]/[action]")]
    [ApiController]
    public class EFController : ControllerBase
    {

        [HttpGet]
        public string Test()
        {
            using (var ef = DBCreate.CreateContext())
            {
                return ef.T_People.FirstOrDefault().Name;
            }
        }
    }
9、运行成功

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于.NET CORE 3.1的WEB API通过EF CORE连接MySQL 的相关文章

  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 将 Microsoft.NETCore.App 更新到 v1.1.0 会导致 -2147450749 (0x80008083)

    我按照以下说明在 Visual Studio 2015 中创建了一个新的 NET Core 项目 https www microsoft com net core windowsvs2015 https www microsoft com
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 使用 JSON 格式正确配置 NLog 到 IHostBuilder

    我有以下代码 应该接受 NLog 的 JSON appsettings 配置 然后使用它来创建 NLog LogFactory 这个 NLog 工厂应该被传递到 MyService 类中 以便在那里创建一个记录器 class Program
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • Visual Studio Code 调试默认 ASP.NET Core MVC WebApp:不起作用

    我正在使用 Manjaro linux 并尝试调试默认的 ASP NET Core MVC 项目 但调试停止 没有任何错误 我创建了该项目 dotnet new mvc in a Meow文件夹 没什么特别的 然后添加了新的配置 NET C
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 如何在Mysql中仅将不同的值从一个表复制到另一个表?

    我有一个大约 2 5GB 的 MySql 数据库 表 A 具有以下列 anoid query date item rank url 我刚刚创建了另一个仅包含列的表 b query and date 我想在查询列中插入所有不同的记录 及其各自
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • Flask-login:无法理解它是如何工作的

    我试图理解如何Flask Login https flask login readthedocs org en latest works 我在他们的文档中看到他们使用预先填充的用户列表 我想使用数据库存储的用户列表 但是 我不明白其中的一些
  • 如何使用 Perl 更改 mysql 密码

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 映射 mysql 中同一个表的多个值

    您好 我必须使用另一个表中的值 id 获取文本值 表 1 包含值 ID 表 2 包含名称和值 ID 表 1 SEVERITY OCCURENCE DETECTABILITY 2 3 4 表 2 id name value 1 Very Hi

随机推荐

  • 《牛客网刷题之零基础入门前端之JavaScript》

    目录 ES5 数据类型 基本数据类型检测 检测复杂数据类型 数据类型转换 运算符 阶乘 绝对值 幂 平方根 余数 数组求和 完全等同 或运算 且运算 字符串字符统计 流程控制 返回星期数 内置对象 从大到小排序 大写字符串 对象属性键名 对
  • java反射详解

    一 反射简介 Class类与java lang reflect库一起对反射的概念进行了支持 该类库包含了Field Method及Constructor 这些类型的对象是由JVM在运行时创建的 这样你就可以使用Constructor创建新的
  • VMware Host Only方式联网配置注意

    VMware下安装CentOS虚拟机 网络配置为Host Only方式 将物理网卡分享给VMnet1以保证虚拟机联网 这样不像Bridge方式要占用单独的IP 若是公共访问就要用bridge方式了 也不会向NAT方式一样每次的IP都会变化
  • 《Unity 3D游戏开发 第2版》宣雨松 pdf分享下载

    链接 pan baidu com s 1LfRTGUma 提取码 e2sn 转载于 https juejin im post 5c2b58895188256e047dc2b5
  • 小程序的点击复制功能和长按复制功能

    前言 在小程序中实现点击复制功能和长按复制功能 主要使用wx setClipboardData 小程序的复制功能 官方方法 wx setClipboardData 小程序的复制功能 功能描述 设置系统剪贴板的内容 调用成功后 会弹出 toa
  • SpringBoot:返回响应,统一封装

    说明 接口的返回响应 封装成统一的数据格式 再返回给前端 返回响应 统一封装实体 数据结构如下 代码 package com example core model import io swagger v3 oas annotations m
  • 官网下载git缓慢问题

    问题描述 为上传项目到github git就避免不了需要下载 但是在git官网中下载 1 2kb s的速度 中途还会卡顿 解决方案 在腾讯软件中心下载 几分钟方可下载完成 1 电脑上有电脑管家的话 选择软件管理 搜索git就可以下载 2 直
  • MBR2GPT:将 MBR 转换为 GPT

    几年前 Windows操作系统通常安装在主引导记录 MBR 分区上 但是 随着固件 UEFI 和更大磁盘的安全进步 现在需要 GUID 分区表 GPT 磁盘来利用这些新功能 如果您将系统磁盘配置为 MBR 磁盘 则MB42GPT exe实用
  • logistic回归详解一:为什么要使用logistic函数

    项目github地址 bitcarmanlee easy algorithm interview and practice 欢迎大家star 留言 一起学习进步 从线性分类器谈起 给定一些数据集合 他们分别属于两个不同的类别 例如对于广告数
  • php 判断数组里有大于0 的值_如何比较两个PHP多维数组

    点击蓝字关注我们 每天获取最新的编程小知识 源 php中文网 源 www php cn 判断两个多维数组是否相等 或有哪些元素区别 我们可以通过PHP中array udiff 函数和create function 方法 strcmp 等函数
  • C++ map

    定义一个map对象 map
  • python求水仙花数(用列表生成式)

    水仙花数是指一个n位数 n 3 它的每位上的数字的n次幕之和等于它本身 例如 13 53 3 3 153 求100 999之间所有的水仙花数 i for i in range 100 1000 if i 100 3 i 10 10 3 i
  • LetCode#7给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。JAVA

    每天一道算法题 拒绝当懒狗 一起进步 题目 给你一个 32 位的有符号整数 x 返回将 x 中的数字部分反转后的结果 如果反转后整数超过 32 位的有符号整数的范围 231 231 1 就返回 0 假设环境不允许存储 64 位整数 有符号或
  • MySQL 可重复读隔离级别,完全解决幻读了吗?

    我在上一篇文章中提到 MySQL InnoDB 引擎的默认隔离级别虽然是 可重复读 但是它很大程度上避免幻读现象 并不是完全解决了 解决的方案有两种 针对快照读 普通 select 语句 是通过 MVCC 方式解决了幻读 因为可重复读隔离级
  • 通过URL自动触发Jenkins构建任务

    方法一 进入jenkins安全设置 开启安全域及授权策略 2 在用户设置处生成api token 复制生成的token 3 选择测试项目 配置 构建触发器 选择触发远程构建 将token粘贴在身份验证令牌处 保存 4 在浏览器中输入 htt
  • 联想ideapad700-15isk(小新线下版)黑苹果完美驱动附详细安装过程

    直接上安装的流程 欢迎大家关注我的个人博客 联想ideapad700 15isk 我的配置如下 前期准备 制作安装盘 盘符分配 设置U盘启动 开始安装 添加本地引导 安装完成进入设置 关于clover 划重点 2020年8月30日更新 20
  • ssm框架+Layui整合案例

    业余写得整合案例 想学习的可以来参考 初来乍到 准备工作 Layui tomcat mysql 目录 1 实现的效果图 2 实现代码 2 0 前端代码 2 1 登录页面login jsp 2 2 登录后跳转的主页面 main jap web
  • SQLi LABS Less-22

    第22关使用POST请求提交参数 对账号和密码中的特殊字符执行了转译的操作 难度较大 这一关的重点在于Cookie 用户登录成功后 将base64编码后的用户名保存到Cookie中 点击提交按钮时 会从Cookie中获取用户名 使用base
  • Yum update和upgrade的区别

    Yum update和upgrade的区别 Linux yum中package升级命令有两个分别是 yum upgrade 和 yum update 1 区别 默认情况下 yum update和yum upgrade的功能是完全一样的 都是
  • 基于.NET CORE 3.1的WEB API通过EF CORE连接MySQL

    基于 NET CORE 3 1的WEB API通过EF CORE连接MySQL 注 本文不采用CodeFirst 不使用迁移 1 准备好一个WEB API项目 可以看我之前的文章 2 准备好一个MySQL数据库并创建表 3 引用nuget包