[C#][MVC5]使用Code First 擴充Identity Table

打從接觸MVC也有快兩年的時光了

但由於公司內部採用既有驗證機制(SSO)

所以對Identity一直沒有什麼接觸

最近碰到趕緊來紀錄一下

 

 

首先我們先來建一個新的專案IdentityExtensionTableDemo

 

按下確定之後

點選變更驗證 -> 個別使用者帳戶

 

專案範本會自動幫你加入Identity Owin的相關程式碼

後面大家應該就不陌生了

瘋狂下一步就好

開起來之後點選Models -> IdentityModels.cs

 

IdentityModels.cs

 

首先我們要從ApplicationUser動手

假設要新增一個Education的Table

所以我們先來新增Education.cs並加入一些基本的屬性

 

掛上Attribute指定資料型態長度

[Required]會影響到該欄位是否允許NULL

 

最後要來建關聯了

因為ApplicationUser -> Education是一對多的關係

所以需要在Education裡面記住ApplicationUser的ID

​​

之後還沒結束

記得回到ApplicationUser.cs中宣告一個ICollection<Education>的屬性

 

好了之後就可以來build我們的schema了

使用Code First務必記得最常用的三個指令

 

- Enable-Migrations : 會幫你自動在專案下建立一個Migration的資料夾,爾後所有Migration的紀錄都會擺在這

- Add-Migration : 當Schema有異動的時候,會幫你建一個Migration(有點類似)

- Update-Database : 在DefaultConnection指定的目標建置資料庫(預設在/App_Data下)

 

好了之後請先打開套件管理器主控台(Package Manager Console, PMC)

 

輸入Enable-Migrations

 

可以看到專案底下多了一個Migrations的資料夾

 

接著輸入Add-Migration [名稱]

 

好了之後會自動打開一個.cs檔(放在/Migrations資料夾底下)

裡面會是這次Migration所要調整的東西

因為是第一次建所以內容會比較多一點

 

最後輸入Update-Database

 

好了之後回到方案總管

記得要顯示所有檔案(預設會隱藏)

然後點右鍵加入至專案

 

點兩下後會跳到伺服器總管的畫面

 

再點兩下快速檢視一下

 

如果還不確定到底關聯有沒有拉成功

可以用Entity Framework確認一下

 

 

這樣就大功告成了

不過眼尖的朋友可能會發現

它幫我產的Education自動加了字尾s

如果想要移掉的話可以在ApplicationDbContext.cs動手腳

 

最後的程式碼放在GitHub