zoukankan      html  css  js  c++  java
  • <五>.netcore webapi连接部署在docker中的mysql

    创建一个api,添加引用包

    Pomelo.EntityFrameworkCore.MySql
    Microsoft.EntityFrameworkCore.Design

    创建一个Data文件夹用来存放context,下一级创建一个Entity文件夹用来存放Entity

    创建一个UserContext

        public class UserContext:DbContext
        {
            public UserContext(DbContextOptions<UserContext> options):base(options)
            {
            }
    
    
            public DbSet<User> Users { get; set; }
        }

    创建一个Entity

      public class User
        {
            public int Id { get; set; }
            public string Name { get; set; }
            
            public string Company { get; set; }
            public string Title { get; set; }
        }

    startup中引入相关配置

     public class Startup
        {
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddDbContext<UserContext>(options=>
                {
                    options.UseMySql(Configuration.GetConnectionString("MysqlUser"));
                });
    
                services.AddControllers();
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseHttpsRedirection();
    
                app.UseRouting();
    
                app.UseAuthorization();
                InitializeDatabase(app);
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapControllers();
                });
            }
    
    
            private void InitializeDatabase(IApplicationBuilder app)
            {
                using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
                {
                    var context = serviceScope.ServiceProvider.GetRequiredService<UserContext>();
                    context.Database.Migrate();
                    if (!context.Users.Any())
                    {
                        context.Users.Add(new Data.Entity.User() { Id = 1, Name = "test" });
                        context.SaveChanges();
                    }
                }
            }
        }

    appsetting中添加配置

     "ConnectionStrings": {
        "MysqlUser": "server=127.0.0.1;port=3306;database=DockerTest;userid=sa2;password=123456"
      }

    执行codefirst命令

    Add-Migration init
    Update-Database

    运行一下程序,查看下数据库

  • 相关阅读:
    There are multiple modules with names that only differ in casing. 问题的一种解决方法
    微软官方tfs源码转移至华为软开云操作过程 by vs2019
    【转载】docker hub下载速度太慢,更新国内源
    visual studio 2019不能在vue文件中直接识别less语法
    visual studio 2019 中初始化 vue.js 项目
    vs在微软官方tfs创建私有项目过程
    WinCC OA-C#-开发一个EricManager
    WinCC OA-JS-CTRL脚本与JS交互
    WinCC OA-JS-使用plotly.js开发个性化图表
    WinCC OA-JS-WebView解析及开发环境搭建
  • 原文地址:https://www.cnblogs.com/choii/p/14003098.html
Copyright © 2011-2022 走看看