打從接觸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