天天看点

asp.net core webAPI学习笔记(四)连接SQL数据库

IDE 版本:Visual Studio 2017 15.9.7

asp.net core 版本 2.1.1

本文档说明需在

asp.net core webAPI学习笔记(一)项目搭建

的基础下进行

引入NuGet包 Entity Framework Core,因为使用的是SQL数据库,所以EFcore包含在了Microsoft.AspnetCore.App包中

修改appsettings.json,添加数据库连接字符串

"ConnectionStrings": {
  //                 数据库地址       数据库名       帐号          密码
  "SqlConn": "Server=localhost;Database=testdb;User ID=sa;Password=sa.123;"
}
           
asp.net core webAPI学习笔记(四)连接SQL数据库

创建Book实体类

namespace ApiTest.Models
{
    public class Book
    {
        public string ID { set; get; }
        public string name { set; get; }
        public string price { set; get; }
    }
}
           

创建DataContext类

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace ApiTest.Models
{
    public class DataContext: DbContext
    {
        public DataContext() : base() { }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            // 获取appsettings.json配置信息
            var config = new ConfigurationBuilder()
                            .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                            .AddJsonFile("appsettings.json")
                            .Build();
            // 获取数据库连接字符串
            string conn = config.GetConnectionString("SqlConn");
            //连接数据库
            optionsBuilder.UseSqlServer(conn);
        }

        public DbSet<Book> book { get; set; } // 不区分大小写,名称必须与数据库表名相同
    }
}
           

创建Book控制器

using ApiTest.Models;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;

namespace ApiTest.Controllers
{
    [Route("api/[controller]")]
    [EnableCors("cors")] //设置跨域处理的 代理
    //[ApiController]
    public class BookController : ControllerBase
    {
        // GET: api/Tiles
        [HttpGet]
        public OkObjectResult Get()
        {
            DataContext db = new DataContext();
            List<Book> pList = db.book.ToList();
            return Ok(from p in pList
                      select new
                      {
                          id = p.ID,
                          name = p.name,
                          price = p.price
                      });
        }
    }
}