Entity Framework Core+MYSQL+ASP.net.web API 6
文章介绍
- 实现EFcore连接本地Mysql数据库
- 最新版本的ASP.NET.CORE.Web API 不是MVC方式
- 实现dbfrist和code 。
资源连接
源码连接
Code Frist
新建项目一个Web API项目:EFcore
- 取消配置HTTPS
- 安装如下nuget包
Entity Framework Core
Entity Framework Core.Tools
Entity Framework Core.SqlServer //这个连接sqlsever需要
pomelo.Entity Framework Core.mysql //这个连接mysql需要
添加mySQL数据库连接字符串
- appsettings.json文件中
"ConnectionStrings": {
"MySQLConnection": "server=localhost;port=3306;uid=root;pwd=liai1234;database=EFCoredb"
},
项目文件夹中新建一个文件夹:Models
- 添加两个类:Parameter 和 ParameterContext
- Parameter .cs
public partial class Parameter
{
[Key]
[Column("id")]
public int Id { get; set; }
[Column("auto")]
public string Auto { get; set; } = null!;
[Column("plcaddress")]
public string Plcaddress { get; set; } = null!;
[Column("type")]
public string Type { get; set; } = null!;
[Column("swith")]
public string Swith { get; set; } = null!;
[Column("ceiling")]
public string Ceiling { get; set; } = null!;
[Column("limit")]
public string Limit { get; set; } = null!;
}
- ParameterContext.cs
public partial class ParameterContext : DbContext
{
public ParameterContext()
{
}
public ParameterContext(DbContextOptions<ParameterContext> options)
: base(options)
{
}
public virtual DbSet<Parameter> Parameter { get; set; } = null!;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
//public int Id { get; set; }
//public string UserName { get; set; } = null!;
//public string PassWord { get; set; } = null!;
//public string DepartmentName { get; set; } = null!;
modelBuilder.Entity<Parameter>(entity =>
{
entity.ToTable("Parameter_Table");
entity.Property(e => e.Swith)
.HasMaxLength(200)
.HasColumnName("swith");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}
- Program.cs
builder.Services.AddDbContext<ParameterContext>(opt => {
string connectionString = builder.Configuration.GetConnectionString("MySQLConnection");
var serverVersion = ServerVersion.AutoDetect(connectionString);
opt.UseMySql(connectionString, serverVersion); });
Codefrist 将代码映射到数据库
- 点击工具 ->NUGET包管理器 -> 程序包管理器控制台
- 依次执行下列迁移命令,不要执行Remove-Migration
- 如果更改了models,需要删除迁移,然后重新迁移
Get-help Migration //查询命令
Add-Migration init //迁移
Remove-Migration //迁移删除
Update-Database //更新到数据库
本机查看mysql数据库新建了一个表
添加几个控制对数据库进行操作
新建控制器:ParameterController
- ParameterController.cs
[Route("api/")]
[ApiController]
public class ParameterController : ControllerBase
{
ParameterTableContext ParameterTableContext;
public ParameterController(ParameterTableContext ParameterTableContext)
{
this.ParameterTableContext = ParameterTableContext;
}
//查找所有
[HttpGet("parameter/getall")]
public IActionResult GetAll()
{
List<ParameterTable> ParameterTable = ParameterTableContext.ParameterTable.ToList(); //查出所有
return Ok(ParameterTable);
}
//添加一个
[HttpPost("parameter/postone")]
public IActionResult PostOne(ParameterTable parameter)
{
var Parameter = ParameterTableContext.ParameterTable.FirstOrDefault(a => a.Id == parameter.Id);
if (Parameter != null)
{
return BadRequest(new {conut=-1,msg="添加失败,id重复"});
}
ParameterTableContext.ParameterTable.Add(parameter); //添加一个
ParameterTableContext.SaveChanges();
return Ok();
}
//修改数据,传入id和要修改成什么
[HttpPost("parameter/modifyone")]
public IActionResult Modify(ParameterTable parameter)
{
var ParameterTable = ParameterTableContext.ParameterTable.FirstOrDefault(a => a.Id == parameter.Id);
if (ParameterTable == null)
{
return BadRequest(new { conut = -1, msg = "修改失败,未找到数据" });
}
//修改数据
// ParameterTable.Id = parameter.Id;
ParameterTable.Parameter = parameter.Parameter;
ParameterTable.Ceiling= parameter.Ceiling;
ParameterTable.Swith= parameter.Swith;
ParameterTable.Limit= parameter.Limit;
ParameterTable.Auto= parameter.Auto;
ParameterTable.Type= parameter.Type;
ParameterTable.Plcaddress= parameter.Plcaddress;
ParameterTableContext.ParameterTable.Update(ParameterTable);
ParameterTableContext.SaveChanges();
return Ok(parameter);
}
//移除一个,输入id
[HttpPost("parameter/Removeone")]
public IActionResult Remove(ParameterTable parameter)
{
var Parameter = ParameterTableContext.ParameterTable.FirstOrDefault(a => a.Id == parameter.Id);
//修改数据
if(Parameter == null)
{
return NotFound();
}
ParameterTableContext.ParameterTable.Remove(Parameter);
ParameterTableContext.SaveChanges();
return Ok(Parameter);
}
}
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本