iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
0
自我挑戰組

C# 從入門到WebApi系列 第 26

[Day26] 使用EF Core來建立資料庫

  • 分享至 

  • xImage
  •  

關於資料庫

我們前幾天的專案中的ProductList
是寫在程式之中
每當我們關閉我們的程式
我們在ProductList中的新增修改刪除
通通會不見!!!
這是因為我們程式實際上開啟時會放在記憶體(RAM)之中
當程式關閉之後
系統會自動釋放記憶體
因此ProductList就消失不見了QQ

為了保存我們的資料
我們可以將我們的ProductList寫到資料庫中

關於ORM

ORM 全名為 Object Relational Mapping
他一種能將資料庫的內容映射到物件

相對比過去在操作關聯式資料庫
大多都是透過所謂的SQL(結構化查詢語言)
對資料庫進行CRUD等等動作

但是透過ORM框架
你能夠不用學習任何SQL(可以的話還是學一下拉)
只要用我們熟悉的程式碼
就能對資料庫進行操作

本篇所要介紹的是Entity Framework Core

安裝EF Core

我會根據官方文件來安裝sqlite
我們打開專案
點選工具->Nuget套件管理員->套件管理員主控台
https://ithelp.ithome.com.tw/upload/images/20200926/20109549ZPhxbHjEhf.png

點開之後會看見下面紅框
我們輸入
Install-Package Microsoft.EntityFrameworkCore.Sqlite
https://ithelp.ithome.com.tw/upload/images/20200926/20109549wfj5cnZZJb.png
可以看見幫我們裝了EFCore
接著再輸入
Install-Package Microsoft.EntityFrameworkCore.Tools

接著我們新增一個資料夾Context
並在裡面新增一個ProductContext.cs的檔案
https://ithelp.ithome.com.tw/upload/images/20200926/201095496oudQ8dnA4.png

在裡面輸入以下程式碼
記得引用命名空間

ProductContext.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using MyFirstApi.Model;

namespace MyFirstApi
{
    public class ProductContext: DbContext
    {
        public DbSet<Product> Products { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=Product.db");
    }
}

這邊DbSet<Prroduct>指的是資料庫的欄位是由Product Model為基準所建置
Products為你資料庫的Table Name

我們一樣開啟套件主控台
輸入Add-Migration InitialCreate
完成後可以看見系統幫你產生了一個資料夾
裡面有兩份程式碼

這份程式碼能幫助你做資料庫的版本控制
所有新增修改刪除欄位都能在這份表一覽無疑
可以使用指令Remove-Migration
來復原本次遷移

最後我們輸入Update-Database
可以看見資料庫被加到方案總管中
https://ithelp.ithome.com.tw/upload/images/20200926/20109549sqLxYJe9Si.png

如果要檢視sqlite可以安裝https://sqlitebrowser.org/dl/
https://ithelp.ithome.com.tw/upload/images/20200926/20109549KtNRJXQEh5.png
安裝完後打開
選擇打開資料庫
找到你的專案資料夾中的資料庫
https://ithelp.ithome.com.tw/upload/images/20200926/20109549AlXibUu64D.png
可以在其中看見資料庫結構跟資料內容
https://ithelp.ithome.com.tw/upload/images/20200926/20109549VyjFLu1jtU.png

關於怎麼操作EF CORE的CRUD
本來今天要講
但是不知道是不是星期六還要上班
頭整個很痛
瞇了一下還是先把文章打完了
CRUD就留到明天吧


上一篇
[DAY26] 參數傳遞方式與前後端分離
下一篇
[Day27] 用ORM進行資料庫操作
系列文
C# 從入門到WebApi30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言