【Docker】 .Net Core 3.1 webapi 集成EF Code First,使用MySql进行业务操作 、配置swagger (三)
系列目录:
【Docker】 CentOS7 安装 Docker 及其使用方法 ( 一 )
【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)
【Docker】 .Net Core 3.1 webapi 集成EF Code First,使用MySql进行业务操作 、配置swagger (三)
.......持续不定期更新中
之前一直用.Net Core 2.1 ,发现3.1后有很多地方和原来的操作不同,踩了一些坑,所以记录一下3.1的操作方法
1.开发环境
.Net Core 3.1
MySql : 5.7.32
2.创建webapi项目
3.查看项目结构,新建ValuesController ,运行项目,打开浏览器访问项目地址 XXX/api/Values
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public string Get()
{
return "value";
}
}
4.集成EntityFramework,打开Nuget,安装EntityFramework的包
下载如下包:
Pomelo.EntityFrameworkCore.MySql 此包用于集成EF,进行增删改查等操作
Microsoft.EntityFrameworkCore.Tools 此包是EF工具包,没有不可以使用数据迁移更新数据库
P.S : MySql.Data.XXX 等Mysql官方包不可用 最新版8.0.22 目前不支持.Net Core 3.1,安装后不可用 。
appsetting.json文件添加数据库连接
"ConnectionStrings": {
"conn": "Data Source=localhost;Database=test;User ID=root;Password=sima1234;port=3306;sslmode=none;"
},
添加数据库DbContext类
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
{
}
public DbSet<User> users { get; set; }
}
打开startup.cs,把db对象注入一下,方便Controller层使用,再改造一下Controller,把路径改成自定义。
services.AddScoped<DbContext, MyDbContext>(); //注入一下db对象
services.AddDbContext<MyDbContext>(options => options.UseMySql(Configuration.GetConnectionString("conn")));
5.打开程序包管理控制台,使用Code First创建数据库
add-Migration init \\ init是名字 随便自己取名字 如果有错可以用 Remove-Migration 回退
update-database \\ 上一步成功后更新数据库
生成的Migration迁移文件
打开数据库查看,user成功创建,另外那张表是ef数据迁移版本记录表
6.修改Controller层代码,自定义访问路径
[Route("/[controller]/[action]")]
[ApiController]
public class ValuesController : ControllerBase
{
private DbContext _db;
public ValuesController(MyDbContext db)
{
this._db = db;
} [HttpGet]
public async Task<string> Add()
{
User user = new User();
user.Username = "admin";
user.Password = "123456";
await _db.Set<User>().AddAsync(user);
await _db.SaveChangesAsync();
return "value";
}
}
运行结果,注意!访问地址已经为自己定义的了。
7 配置swagger
配置swagger 用于自动生成接口文档,给前端同事查看。
下载此包 Swashbuckle.AspNetCore
将 Swagger 生成器添加到 Startup.ConfigureServices 方法中的服务集合中:
P.S: .Net Core 3.1之后的版本 不用使用 new Info 要用 new OpenApiInfo
// 注册Swagger,定义一个和多个文档
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
在 Startup.Configure
方法中,启用中间件为生成 Swagger。
// 启用中间件服务生成Swagger
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "接口文档");
});
修改接口代码
/// <summary>
/// 添加用户
/// </summary>
/// <param name="user">用户实体</param>
/// <returns></returns>
[HttpPost]
public async Task<string> Add(User user)
{
await _db.Set<User>().AddAsync(user);
await _db.SaveChangesAsync();
return "value";
} /// <summary>
/// 获取所有用户
/// </summary>
/// <returns>所有用户</returns>
[HttpGet]
public async Task<List<User>> GetList()
{
var list = await _db.Set<User>().ToListAsync();
return list;
}
打开网站 访问 XXXX/swagger/inedx.html 访问Swagger文档,接口信息成功显示
8. wagger显示接口注释
右键点击项目-属性-生成,输出xml文档文件,打钩,用于swagger调用显示注释。
打断点查看具体生成地址,此xml文件生成在这里
运行项目,查看,已经有了注释
9. 关闭需要输入注释的警告
项目中有些不想输入注释的地方也会提示要求输入注释!很烦 !
右键点击项目-属性,取消显示警告,添加1591
添加后重新运行项目,问题解决。
【Docker】 .Net Core 3.1 webapi 集成EF Code First,使用MySql进行业务操作 、配置swagger (三)的更多相关文章
- asp.net core 2.0 webapi集成signalr
asp.net core 2.0 webapi集成signalr 在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.N ...
- asp.net core 系列之webapi集成Dapper的简单操作教程
Dapper也是是一种ORM框架 这里记录下,使用ASP.NET 集成 Dapper 的过程,方便自己查看 至于Dapper的特性以及操作可以参考Dapper官方文档 1.创建数据库相关 在Sql S ...
- asp.net core 系列之webapi集成EFCore的简单操作教程
因为官网asp.net core webapi教程部分,给出的是使用内存中的数据即 UseInMemoryDatabase 的方式, 这里记录一下,使用SQL Server数据库的方式即 UseSql ...
- C# 之 .net core -- EF code first连接Mysql数据库
一.在Models 新建两个数据库类 这个是数据库需要生成的类基础(塑造外观) public class User { [Key] public string ID { get; set; } [Ma ...
- EF Code First 连接MySql
看了很多文章,尝试了很多次总是进行不下去,整理一下,以便日后查看. 1.创建ASP.NET MVC项目(EFCodeFirst) 1.1.右键点击引用选择管理NuGet程序包下载MySql.Data. ...
- ASP.NET Core 2.2 WebApi 系列【五】MiniProfiler与Swagger集成
MiniProfiler 是一款性能分析的轻量级程序,可以基于action(request)记录每个阶段的耗时时长,还是可以显示访问数据库时的SQL(支持EF.EF Code First)等 一.安装 ...
- asp.net core系列 37 WebAPI 使用OpenAPI (swagger)中间件
一.概述 在使用Web API时,对于开发人员来说,了解其各种方法可能是一项挑战.在ASP.NET Core上,Web api 辅助工具介绍二个中间件,包括:Swashbuckle和NSwag .NE ...
- WebApi 集成 Swagger
1. Swagger(俗称:丝袜哥)是什么东西? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同 ...
- mvc+webapi+dapper+ef codefirst项目搭建
首先项目是mvc5+webapi2.0+orm数据处理(dapper)+ef动态创建数据库. 1.项目框架层次结构: mvc项目根据不同的业务和功能进行不同的区域划分[今后项目维护起来方便],mode ...
随机推荐
- Python优点与缺点
优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一.它 ...
- 利用远程桌面管理winserver集群
在适用mstsc连接winserver服务器的场景下(别问为什么不VNC),可以利用rdp文件等方式减轻连接的操作负担 利用.rdp文件免密登录 rdp文件本质上是一个mstsc的选择,或者不如说ms ...
- Redis 数据结构之字符串的那些骚操作
Redis 字符串底层用的是 sds 结构,该结构同 c 语言的字符串相比,其优点是可以节省内存分配的次数,还可以... 这样写是不是读起来很无聊?这些都是别人咀嚼过后,经过一轮两轮三轮的再次咀嚼,吐 ...
- prometheus监控golang服务实践
一.prometheus基本原理介绍 prometheus是基于metric采样的监控,可以自定义监控指标,如:服务每秒请求数.请求失败数.请求执行时间等,每经过一个时间间隔,数据都会从运行的服务中流 ...
- 极客mysql06
两阶段锁:在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放, 而是要等到事务结束时才释放. 建议:如果你的事务中需要锁多个行,要把最可能造成锁冲突.最可能影响并发度的锁 ...
- kettle——转换案例
把stu1的数据按id同步到stu2,stu2有相同id则更新数据 (1)在mysql中创建两张表 mysql> create database kettle; mysql> use ke ...
- oracle 11.2.0.4静默安装
oracle 11.2.0.4静默安装 1.安装包 1.1.上传安装包 xshell可用rz命令,选择安装包. mobaxterm可用左侧栏上传功能. 2.安装准备 2.1.关闭防火墙.SELinux ...
- [JLOI2011]飞行路线 题解
[JLOI2011]飞行路线 题解 题目TP门 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有 ...
- 基于RBAC实现权限管理
基于RBAC实现权限管理 技术栈:SpringBoot.SpringMVC RBAC RBAC数据库表 主体 编号 账号 密码 001 admin 123456 资源 编号 资源名称 访问路径 001 ...
- 异或加密 - cr2-many-time-secrets(攻防世界) - 异性相吸(buuctf)
Crib dragging attack 在开始了解 Crib dragging attack 之前,先来理一理 异或. 异或加密 [详情请戳这里] XOR 加密简介 异或加密特性: ① 两个值相同时 ...