.net core 3.0 连接mysql填坑指南

新建项目

新建->项目->c#->.net core web->api
在这里插入图片描述

安装mysql

win: 下载地址
linux :自行百度教程
安装完成后,修改用户及权限。最新版的mysql创建用户赋予权限是分开的。
旧:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 

%可以换成固定ip。
新:

create user 'root'@'%'  identified by '密码'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

创建完用户之后,由于加密问题可能导致core报错 (貌似是因为mysql8.0的加密方式) 。如果出现publickey=true之类的字样,大概率是因为mysql加密这里的出了问题。
解决方式

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新密码 
FLUSH PRIVILEGES; #刷新权限

之后根据实体类创建表。

添加文件夹,添加DbContext类

在项目根目录下添加文件夹,用来放数据库相关文件。我这里是Dao
在这里插入图片描述
Dao层新建Context文件,也就是数据上下文文件。我这里是WebDbContext。注入时会用到。
修改WebDbContext

public class WebDbContext : DbContext
    {
        public WebDbContext(DbContextOptions<WebDbContext> options) : base(options)
        {
        }
    }

这里会提示DbContext 找不到之类的错误,放在上面添加修改的时候会提示你安装Microsoft.EntityFrameworkCore的包,如果没有去nuget里自己装一下。

添加实体类文件夹

同样在项目根目录下添加文件夹Entity,随你高兴叫啥名。文件夹下添加一个实体类
在这里插入图片描述
完成之后
WebDbContext 添加该实体。

 using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Web3._1.Entity;

namespace Web3._1.Dao
{
    public class WebDbContext : DbContext
    {
        public WebDbContext(DbContextOptions<WebDbContext> options) : base(options)
        {
        }

        public DbSet<Account> Account { get; set; }
    }
}

添加一个Dao方法

在Dao文件夹下,新建AccountDao.cs文件。修改文件内容。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Web3._1.Entity;

namespace Web3._1.Dao
{
    public class AccountDao
    {
        #region 依赖注入
        private WebDbContext dbContext;

        public AccountDao(WebDbContext _WebDbContext) 
        {
            dbContext = _WebDbContext;
        }
        #endregion


        #region 添加账户
        /// <summary>
        /// 添加账户
        /// </summary>
        /// <param name="account"></param>
        /// <returns></returns>
        public bool Add(Account account) 
        {
            dbContext.Account.Add(account);
            return dbContext.SaveChanges() > 0;
        }
        #endregion
    }
}

这种注入方式用着十分不便,但是我刚开始研究,也没有找到好的方式解决,先凑乎使用吧。

添加controller

因为我这里是做的api,所以使用了区域。如果没有这方面的可以直接在controller里调用。一样原理不再赘述。

添加区域

右键项目名,添加
在这里插入图片描述

选择mvc区域。如果添加失败重新加载一下项目,再试一次。文件别有错误,有错误先解决注释掉。
添加成功以后,会出现提示文本告诉你要去startup添加路由规则
在这里插入图片描述
这里后面会修改。

添加controller

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Web3._1.Dao;
using Web3._1.Entity;

namespace Web3._1.Areas.Admin.Controllers
{
    public class AccountController:Controller
    {
        private AccountDao accountDao;

        public AccountController(AccountDao _accountDao) 
        {
            accountDao = _accountDao;
        }

        public JsonResult Add() 
        {
            var entity = new Account()
            {
                ID = Guid.NewGuid().ToString(),
                AccountName = "sa01",
                Password = "123456",
                CreateDate = DateTime.Now,
                Creator = Guid.NewGuid().ToString(),
                Modifier = Guid.NewGuid().ToString(),
                ModifyDate = DateTime.Now
            };

            accountDao.Add(entity);
            return Json(new { state =1 });
        }
    }
}

添加nuget:Pomelo.EntityFrameworkCore.MySql

搜素Pomelo.EntityFrameworkCore.MySql,mysql官方的不支持core 3+

修改startup文件

找到 ConfigureServices 类,在里面添加依赖。

 public void ConfigureServices(IServiceCollection services)
        {
            //添加数据上下文
            services.AddDbContext<WebDbContext>(d => d.UseMySql(Configuration.GetConnectionString("Web3.1")));
            //添加dao层依赖
			services.AddTransient<AccountDao>();
            services.AddControllers();
        }

找到 Configure 类,修改路由规则

 app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapAreaControllerRoute("Admin", "Admin", "Admin/{controller=Home}/{action=Index}/{id?}");
            });

找到appsetting.json,添加一行

"ConnectionStrings": {
    "Web3.1": "Data Source=数据库地址;Database=数据库名;UserID=数据库连接名;Password=连连接密码;pooling=true;CharSet=utf8mb4;port=3306;sslmode=none"
  },

启动项目,有错改错。没错基本就完了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值