2022年2月1日 星期二

Code First MVC練習心得2_Migrations異動更新

 這一集YT主要講使用者登入一個線上課程網站的製作

當然有首頁採用英雄式標題首頁,何謂英雄式首頁將一個主題填滿整個畫面

首頁有各式課程主題,使用者點選某一課程,會請你輸入帳密,沒有就進入註冊畫面

使用者依帳號進入可選擇你喜歡的課程,而管理員可自訂課程類別及課程項目等上架機制

以上為該系統需求概述,而作者採用Code First來建立MVC,這跟之前看印度YT都採用DB First

不一樣,在剛回來高雄時有照著微軟的導引手冊做過Code First不過那時不是很理解

只是無腦把它做完,老實說只有一點感覺,發現在中的專案就採用Code First,

但現在我還是不知道為甚麼要用Code First他到底有甚麼優點?

為什麼就不用DB First很好理解阿.........................

不過就慢慢地發覺.......................或許有我不知道的事

第一個觀念

在使用Code First有依一個很重要的觀念,當你建立新專案採用.Net Core MVC

會有Migrations資料夾,換言之你透過程式碼撰寫資料庫欄位都會存在此資料夾內,

並未更新至資料庫,必須使用套件管理主控台進行更新至實體資料庫,

當然更新置資料庫有很多情況,這邊重要觀念是程式碼所規劃的欄位都在此處

必須使用主控台進行更新至資料庫。

查找相關文章果然重要,簡單講當資料欄位異動時可以透過Migrations做資料異動版本,好處可以不用頻繁開資料庫更新EF。

第二個觀念

使用Code First對於環境設定必須注意,他不像DB First對於環境採用內定值怎麼簡單

首先是appsettings.json設定資料庫連線字串包含資料庫名稱及資料庫名稱

2.ApplicationDbContext.cs這個檔案似乎在定義Table欄位地方,觀念必須在實作

這一次開專案驗證選擇個人平常都選擇無,而這個驗證選個人用戶,意思微軟就幫你建好角色

相關Table,以前在微軟的技術文件有看過,但翻譯過來有點艱澀難懂,可是就是我認為要學

的東西也就是說權限帳號,這是一個系統最基本的東西,沒有權限帳號所有功能及需求,

都無法展現,今天看這YT就那麼簡單勾一下個人用戶相關表格就出來,當然如何使用再看

這次實驗要在微軟的其中權限帳號表格擴充欄位,步驟如下

1.appsettings.json設定資料庫連結

2.ApplicationDbContext.cs擴充AppclationUser Class裡面共計5個欄位

要注意public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

必須加入黑色粗體因為AppclationUser Class是繼承ApplicationDbContext 

第五集主要是講Migrations可形成資料版本可使用以下指令

Add-Migrations 版本名稱

所以當你的ApplicationDbContext.cs欄位有所異動時,可使用此指令增加版本新增

update-dabase  此指令將最新的異動更新至資料庫

若你要回到之前某一個異動版本可執行 update-database 異動檔名稱

當然你要刪除某一個異動檔 remove-database 異動檔名稱





沒有留言:

張貼留言

無現金支付的反思!

  **購物經歷** - 作者花費大量時間尋找立燈,最終在IKEA購買了一個649元的立燈 - 在IKEA附近停車場遇到只接受無現金支付的情況,被迫註冊並使用Line Pay **無現金支付的觀察** - 作者認為Line Pay作為前端介面,有助於提高停車場付費效率 - 作者預...