新建->项目->c#->.net core web->api
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; #刷新权限
之后根据实体类创建表。
在项目根目录下添加文件夹,用来放数据库相关文件。我这里是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文件夹下,新建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 添加账户
///
/// 添加账户
///
///
///
public bool Add(Account account)
{
dbContext.Account.Add(account);
return dbContext.SaveChanges() > 0;
}
#endregion
}
}
这种注入方式用着十分不便,但是我刚开始研究,也没有找到好的方式解决,先凑乎使用吧。
因为我这里是做的api,所以使用了区域。如果没有这方面的可以直接在controller里调用。一样原理不再赘述。
右键项目名,添加
选择mvc区域。如果添加失败重新加载一下项目,再试一次。文件别有错误,有错误先解决注释掉。
添加成功以后,会出现提示文本告诉你要去startup添加路由规则
这里后面会修改。
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 });
}
}
}
搜素Pomelo.EntityFrameworkCore.MySql,mysql官方的不支持core 3+
找到 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"
},
启动项目,有错改错。没错基本就完了。