天天看點

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
                      });
        }
    }
}