net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)七引入efcore

Posted 圆滚滚的胖狸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)七引入efcore相关的知识,希望对你有一定的参考价值。

首先准备好数据库,我用的是阿里云的mysql数据库,准备好相关的数据库连接和用户名密码

vs2022中引入efcore,需要添加vs2022的扩展

在appsetting.json中写入连接字符串。

 

注意两个问题:一是,server一定是阿里云提供的外网连接地址。二是,要在rds安全中添加本地外网的IP地址到白名单,否则无法连接成功。

下面通过Nuget安装mysql和ef的包

 

注意哈:vs2022连接mysql,oracle公司的插件基本都已经弃用了,微软推荐了pomelo的这一个

我的数据库已经建立好,我实现的是传统的Modelfist

首先在model项目上点右键,在出现的菜单上点击EF Core工具,再点击反向工程

 

 

 

 

 

 

注意注意:在点击确定前一定要保证数据库连接是正常的,要用mysql的工具去测试一下,否则点击确定后会没有反应。

会在输出栏中看到以下报错信息

如果正常的话,那么你点击确定会看到以下画面。假如你看不到,也可以尝试去安装

mysql-installer-community

 我勾选了这些内容。具体使用哪些根据自己的习惯和业务需要

 勾选完成后点击确定

系统生成model文件

 

 在program.cs中添加数据库注入

#region 注入数据库

var conn = config.GetConnectionString("AuthDb");

builder.Services.AddEntityFrameworkMySql().AddDbContext<auth_dbContext>(options => options.UseMySql(conn, ServerVersion.Parse("8.0.29-mysql")));

#endregion

然后在TestController中添加依赖注入,添加测试代码

更改后的代码如下

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NET6Demo.IRepository;
using NET6Demo.IService;
using NET6Demo.Model;
using NET6Demo.Utility.Token;
using System.IdentityModel.Tokens.Jwt;

namespace NET6Demo_WebApi.Controllers

    public class TestController : BaseController
    
        private ILogger<TestController> _logger;
        private readonly IServiceProvider _provider;        
        private IUserInfo _user;
        private JwtSecurityTokenHandler _jwtHandler;
        private TokenHelper _tokenHelper;
        private auth_dbContext _dbContext; //添加context依赖注入

        public TestController(
            ILogger<TestController> logger,
            IServiceProvider provider,
            IUserInfo user,
            JwtSecurityTokenHandler jwtSecurityTokenHandler,
            TokenHelper tokenHelper,
            auth_dbContext authDbContext) //添加context依赖注入
        
            _logger = logger;
            _provider = provider;
            _user = user;
            _jwtHandler = jwtSecurityTokenHandler;
            _tokenHelper = tokenHelper;
            _dbContext = authDbContext; //添加context依赖注入
        

        [AllowAnonymous]
        [HttpGet("GetTest")]
        public async Task<IActionResult> GetTestResult(string userId)
        
            Console.WriteLine("测试一下输出日志");
            _logger.LogInformation("日志输出了");
            _user = _provider.GetService<IUsers>().GetUser(userId);
            //throw new Exception("Test exception");
            //return Ok(_user);
            //return BadRequest();

            //return Ok(_tokenHelper.CreateJwtToken(_user));
            var user = _dbContext.Set<tb_info_user>().FirstOrDefault(); //从数据库中获取一个数据
            return Ok(user); 


        

    

然后运行程序,打开swagger,测试API,得到如下结果

 

成功连接了数据库

至此框架搭建完毕

附:源码下载地址

GitHub - shirley-cat/NET6Demo_WebApi

 

以上是关于net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)七引入efcore的主要内容,如果未能解决你的问题,请参考以下文章

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二配置log4net

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger