基于.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 的相关文章

  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 如何在.NET Core上直接调用F#编译器?

    UPD 我想直接从 NET Core SDK 调用 F 编译器 即 fsc 我了解 dotnet build co 但当我只需要编译一个简单的问题时 即 fsc file fs 就足够的情况下 我不想涉及它们 我尝试在 NET Core S
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • 通过将行旋转为动态数量的列来在 MySQL 中创建摘要视图

    我在 MySQL 中有一个表 其中包含以下字段 id company name year state 同一客户和年份有多行 以下是数据示例 id company name year state 1 companyA 2008 1 2 com
  • INNER JOIN 可用作 SELECT,但不能用作 DELETE [重复]

    这个问题在这里已经有答案了 为什么这个有语法错误 DELETE FROM print mailing request pmr INNER JOIN person p ON p id pmr person AND p email LIKE T
  • 如何在数据库中保存未来(!)日期

    这个问题专门涉及未来的日期和时间 对于过去的值 UTC 无疑是首选 我想知道是否有人对拯救生命的 最佳 方法有建议futureMySQL 数据库中的日期和时间 或者就此而言一般来说 特别是在该列可以保存不同时区时间的情况下 考虑到时区规则可
  • 将 mysql LONGTEXT 值转换为 VARCHAR 值?

    我有一个在用户 Facebook 墙上发布的功能 我发送到 facebook 的一件事是我从设置为 LONGTEXT 的 mysql 表中获取的一些文本 如果我将表设置为 LONGTEXT 则文本不会发送到 facebook 但如果我将表设
  • MySQL 中的 UDF 性能

    我注意到 当查询在 SELECT 或 WHERE 子句中调用 UDF 时 MySQL 查询执行时间的性能会呈指数级下降 有问题的 UDF 查询本地表以返回标量值 因此它们不仅执行算术表达式 而且充当相关子查询 我通过简单地删除 UDF 并使
  • 如何使用 exec.Command 在 golang 中执行 Mysql 脚本

    您好 我正在尝试执行一个脚本以使用 Golang 将数据填充到数据库中 func executeTestScript cmd exec Command usr local mysql bin mysql h127 0 0 1 P3333 u
  • 错误代码 13,SELECT INTO OUTFILE 问题

    我试图了解使用 INTO OUTFILE 命令时不断遇到问题的原因 我总是收到这个错误 ERROR 1 HY000 Can t create write to file var www p1 txt Errcode 13 SELECT pa
  • 消除 JPA 标准中子查询产生的冗余连接

    我只需要使用 JPA 标准执行以下 MySQL 查询 获取状态列表 来自state table 基于给定的国家名称 在country SELECT state id state name country id FROM state tabl
  • MySQL 中非空值的计数和分组

    我需要计算按特定 ID 分组的非空 我的意思是至少包含 1 个字符的字符串 行 例如 我的数据可能如下所示 form id mapping 1 value 1 1 1 value 2 2 2 NULL 3 value 3 我想计算每个表单的
  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • MySQL 和 MariaDB 数据库有什么区别?

    我已经使用 XAMPP 很长时间了 很惊讶 XAMPP 已经从 MySQL 切换到了 MariaDB https www apachefriends org index html https www apachefriends org in
  • Mysql 在给定日期时间范围内插入随机日期时间

    使用 SQL 我可以在给出范围的列中插入随机日期时间值吗 例如 给定一个范围2010 04 30 14 53 27 to 2012 04 30 14 53 27 我对范围部分感到困惑 因为我刚刚做了这个 INSERT INTO someta
  • VB.NET 和 MySql UPDATE 查询

    我的代码在这里没有错误 至少在我调试它时没有错误 我使用VS 2010 但我希望发生的是 当我单击添加按钮时 文本框 txtQty 中的数字将添加到当前保存在 数量 列中的数字中 例如 txtQty 100 该列上的当前值为 200 我想将
  • 无法打开 phpmyadmin,require_once(./libraries/common.inc.php):无法打开流:没有这样的文件或目录

    当我做php usr share phpmyadmin index php 我明白了 PHP 警告 require once libraries common inc php 无法打开流 第 33 行 usr share phpmyadmi
  • 插入 Mysql 表时防止 Json 排序

    在发送 AJAX 请求时 Json Content 的重新排序已经是一个已知问题 但我不知道在将 Json content 插入 JSON 类型的 Mysql 表时也会发生同样的情况 在这种情况下 mysql 服务器在保存之前也会对其内容进
  • Laravel 中的 SQL 运算符是什么?

    我正在查看 Laravel 的源代码 发现了很多 Eloquent 的 SQL 运算符 我想知道其中一些是什么以及如何使用它们 不幸的是我没有找到任何文档 这是我找到的运营商vendor laravel framework src Illu

随机推荐

  • 《牛客网刷题之零基础入门前端之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包