我的Docker-CE学习笔记(03)

新建一个Asp.net Core 2.0 WebAPI项目。

添加EntityFrameworkCore引用

建立Data,Models文件夹

Models内建立User.cs

namespace User.API.Models
{
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Company { get; set; }
        public string Title { get; set; }
    }
}

Data内建立UserContext.cs,继承自DBContext

namespace User.API.Data
{
    public class UserContext : DbContext
    {
        // 传一个构造函数
        // base调用构造函数
        public UserContext(DbContextOptions<UserContext> options) : base(options)
        {

        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // 重写方法,AppUser生成Users
            modelBuilder.Entity<AppUser>()
                .ToTable("Users")
                .HasKey(u => u.Id);

            base.OnModelCreating(modelBuilder);
        }

        public DbSet<AppUser> Users { get; set; }
    }
}

appsettings.json添加连接字符串

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "ConnectionStrings": {
    "MySqlUser": "server=127.0.0.1;port=3306;database=fieer_mysql;userid=fieer;password=fieer"
  }
}

Startup.cs内添加服务,生成默认数据

namespace User.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            // 添加
            services.AddDbContext<UserContext>(options =>
            {
                options.UseMySQL(Configuration.GetConnectionString("MySqlUser"));
            });
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
            InitUserDatabase(app);
        }

        // 添加默认用户
        public void InitUserDatabase(IApplicationBuilder applicationBuilder)
        {
            // 依赖注入
            using (var scope = applicationBuilder.ApplicationServices.CreateScope())
            {
                var userContext = scope.ServiceProvider.GetRequiredService<UserContext>();
                if (!userContext.Users.Any())
                {
                    userContext.Users.Add(new Models.AppUser { Name = "fieer" });
                    userContext.SaveChanges();
                }
            }

        }
    }
}

暂时注释掉InitUserDatabase(app);

程序包管理控制台,添加Migration

$ Add-Migration init

生成文件

更新数据库

$ Update-database

取消备注,运行程序

编辑ValuesController.cs

namespace User.API.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        private UserContext _userContext;

        // 依赖注入
        public ValuesController(UserContext userContext)
        {
            _userContext = userContext;
        }

        // GET api/values
        [HttpGet]
        public async Task<IActionResult> Get()
        {
            return Json(await _userContext.Users.SingleOrDefaultAsync(u => u.Name == "fieer"));
        }
    }
}

运行程序

posted @ 2018-03-04 01:22  桞木木  阅读(130)  评论(0编辑  收藏  举报