asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行
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> 删除单个用户
博客内容仅代表个人观点,如发现阐述有误,麻烦指正,谢谢!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
mysql之innodb引擎使用方法
前言 闲来无事做不如MySQL。 一.简介:1.Linux下使用MySQL数据库时,为了支持事务操作需要用到InnoDB引擎,对于表中处理的插入,更新等操作失败时,回滚前面不应该完成的操作是必须的. 2.一般MySQL默认的数据库引擎是MyISAM,不支持事务和外键,则可使用支持事务和外键的InnoDB引擎. 3.本笔记着重讲解MySQL的autocommit变量,如何在数据库中设置自动提交,禁止自动提交,如何在对表操作失败后回滚,对表操作成功后提交事务! 二.操作方法MySQL的autocommit默认是打开的(ON为打开,OFF为关闭或者表示成1为打开,0为关闭)打开或关闭即是打开自动提交或者关闭自动提交 1.MySQL命令: 方法1:如果是支持事务的引擎,如InnoDB则有系统参数设置是否自动commit,查看参数如下: mysql> show variables like '%autocommit%'; 显示结果为ON,表示事务自动提交,即不用手工去commit。当然,你可以设置其为OFF,然后自己手工去commit。 打开和关闭自动提交功能命令: 关闭自动提交功...
- 下一篇
云安全是云计算大规模应用前提
上周云储存服务商Dropbox遭遇了一次严重的安全问题,任何用户的帐号不用密码就可以直接访问。问题与程序代码有关,Dropbox在当天更新了代码,结果引进了一个影响认证系统的bug;直至4小时后他们才发现问题,并立即进行了修正。官方博客证实,已经向在此期待登录的帐号发送了电子邮件通知,Dropbox公司表示只有一小部分的账户被匿名访问。同时Dropbox联合创始人Arash Ferdowsi表示,他们将加强安全确保不会发生同样事情。 许多愤怒的客户威胁要将他们的文件存放到其竞争对手的云服务之中。此次的事故再一次激起了用户以及其他青睐云存储公司对于服务器端加密等安全问题的争论。 同时上周19岁英国少年黑客瑞恩被英美警方联合抓捕,瑞恩面临5项指控,其中包括密谋袭击英国唱片业协会的网站和国际唱片业联合会的网站。 在全球一系列的打击行动中,FBI已经打掉了两个网络犯罪集团,他们主要散布病毒及恶意软件。这两个犯罪团伙累计获利7400万美元,百万的电脑用户深受其害。 近日Ponemon针对Juniper网络公司产品进行了调查,以583家公司为样本的报告指出,有九成的公司表示在过去一年内至少有一次被...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7安装Docker,走上虚拟化容器引擎之路