0
点赞
收藏
分享

微信扫一扫

【Entity Framework Core+MYSQL】.net.web API 6 连接mysql数据库,实现查询,修改功能

烟中雯城 2022-04-13 阅读 26
mysqlc#

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
    \Q
  • 安装如下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"
  },

2

项目文件夹中新建一个文件夹: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数据库新建了一个表

3

添加几个控制对数据库进行操作

新建控制器: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语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

举报

相关推荐

0 条评论