asp.net core webapi 使用ef 對mysql進行增刪改查,並產生Docker鏡像構建容器運行

來源:互聯網
上載者:User

標籤:rs.remove   技術   ima   rem   鏡像   arp   option   link   檔案   

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.測試提供者

添加反向 Proxy,修改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> 刪除單個使用者

 

asp.net core webapi 使用ef 對mysql進行增刪改查,並產生Docker鏡像構建容器運行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.