asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 1.构建运行mysql容器,添加数据库user 参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html 添加user数据库,添加tbusers表 2.

1.构建运行mysql容器,添加数据库user

参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html

添加user数据库,添加tbusers表

2.创建asp.net core webapi 应用程序

参考Docker 为 ASP.NET Core WebApi 应用程序生成 Docker 映像,创建容器并运行,地址 http://www.cnblogs.com/heyangyi/p/9323407.html

<2.1> 修改 appsettings.json  文件,添加 dbconn 数据库链接配置

 

<2.2> 新增Config类,用来存储配置

    public class Config
    {
        public static string dbconn;
    }

<2.3> 修改Program 类,读取配置

    public class Program
    {
        private static IConfigurationRoot Configuration { get; set; }

        public static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
             .SetBasePath(Directory.GetCurrentDirectory())
             .AddJsonFile("appsettings.json");

            Configuration = builder.Build();
            Config.dbconn = Configuration.GetValue<string>("dbconn");

            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }

<2.4> 新增DataContext类

安装引用:MySql.Data.EntityFrameworkCore

    public class DataContext : DbContext
    {
        public DbSet<tbuser> tbusers { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseMySQL(Config.dbconn);
    }
    public class tbuser
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int id { get; set; }
        public string nickName { get; set; }
        public string email { get; set; }
    }

<2.5> 新增tbuserDataHandle类

    public class tbuserDataHandle : DataContext
    {
        public static int adduser(tbuser user)
        {
            try
            {
                using (var context = new DataContext())
                {
                    context.Database.EnsureCreated();
                    context.Add(user);

                    context.SaveChanges();
                }
                return 200;
            }
            catch (Exception ex)
            {
                return 300;
            }
        }

        public static List<tbuser> Get()
        {
            try
            {
                using (var context = new DataContext())
                {
                    var users = context.tbusers;
                    List<tbuser> items = new List<tbuser>();
                    foreach (var item in users)
                    {
                        items.Add(item);
                    }
                    return items;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        public static tbuser Get(int id)
        {
            try
            {
                using (var context = new DataContext())
                {
                    var u = context.tbusers.Find(id);
                    return u;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        public static int Delete(int id)
        {
            try
            {
                using (var context = new DataContext())
                {
                    var u = context.tbusers.Remove(new tbuser() { id = id });
                    context.SaveChanges();
                    return 200;
                }
            }
            catch (Exception ex)
            {
                return 300;
            }
        }

        public static int Put(int id, tbuser user)
        {
            try
            {
                using (var context = new DataContext())
                {
                    var u = context.tbusers.Update(user);
                    context.SaveChanges();
                    return 200;
                }
            }
            catch (Exception ex)
            {
                return 300;
            }
        }
    }

<2.6> 新增userController Api

    [Produces("application/json")]
    [Route("api/user")]
    public class userController : Controller
    {
        // POST api/user
        [HttpPost]
        public int Post(tbuser user)
        {
            return tbuserDataHandle.adduser(user);
        }

        // GET api/user
        [HttpGet]
        public List<tbuser> Get()
        {
            return tbuserDataHandle.Get();
        }

        // GET api/user/5
        [HttpGet("{id}")]
        public tbuser Get(int id)
        {
            return tbuserDataHandle.Get(id);
        }

        // DELETE api/user/5
        [HttpDelete("{id}")]
        public int Delete(int id)
        {
            return tbuserDataHandle.Delete(id);
        }

        // PUT api/user/5
        [HttpPut("{id}")]
        public int Put(int id, tbuser user)
        {
            return tbuserDataHandle.Put(id, user);
        }
    }

3.生成项目,构建docker镜像并创作容器运行

修改 docker-compose.yml ,docker-compose.override.yml  的 version 为:

 version: '2.0'

配置 appsettings.json 的 dbconn 为:

"dbconn": "server=192.168.99.100;user id=root;password=123456;persistsecurityinfo=True;port=3307;database=user;SslMode=none"

进入到 E:\web\ilinkcore (这个目录为解决方案的根目录)

docker-compose up

执行成功后创建一个 ilinkcore 的镜像,并且运行了一个 ilinkcore_ilinkcore_1的容器,将本机的32783端口映射到容器的80端口

4.测试访问接口

添加反向代理,修改nginx 配置

server{
    listen       84;
    server_name  localhost;
    location / {  
        proxy_pass   http://192.168.99.100:32783;  
        index  index.html index.htm;  
    }       
}

重新运行nginx,使用Postman进行api接口测试

<4.1> 测试接口进行添加user数据

Headers 中添加项:

Content-Type:application/json

<4.2>查看所有用户数据

<4.3> 检索某个用户数据

<4.4> 更新某个用户数据

Headers 中添加项:

Content-Type:application/json

<4.5> 删除单个用户

 

博客内容仅代表个人观点,如发现阐述有误,麻烦指正,谢谢!
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
1
分享
相关文章
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
94 5
|
4月前
|
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
347 76
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
271 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
150 4
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
105 1
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
94 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
101 9
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
91 3