學習ASP.NET Core Razor 編程系列目錄
學習ASP.NET Core Razor 編程系列二——添加一個實體
學習ASP.NET Core Razor 編程系列三——創建數據表及創建項目基本頁面
學習ASP.NET Core Razor 編程系列四——Asp.Net Core Razor列表模板頁面
學習ASP.NET Core Razor 編程系列五——Asp.Net Core Razor新建模板頁面
學習ASP.NET Core Razor 編程系列六——數據庫初始化
學習ASP.NET Core Razor 編程系列七——修改列表頁面
學習ASP.NET Core Razor 編程系列八——並發處理
學習ASP.NET Core Razor 編程系列九——增加查詢功能
學習ASP.NET Core Razor 編程系列十——添加新字段
在經過了上面篇文章的學習之后,本篇文章我們來學習如何使用 Entity Framework Code First 遷移功能將新字段添加到模型,並且同時將新字段添加到數據庫中。
使用 EF Code First 自動創建數據庫時,Code First 會向數據庫添加一個表,以幫助跟蹤數據庫的架構是否與生成它的實體類同步。 如果它們不同步,EF 就會引發異常。 這樣一來就更容易發現一致的數據庫表或者代碼問題。
我們接下來使用Code First遷移功能更新數據庫。
1. 現在我們來修改seeddata類,在類中增加一個Publishing字段,並提供數據。修改示例如下所示,你可以對每一本書籍信息都參照修改。
context.Book.AddRange( new Book { Name = "Python編程 從入門到實踐", ReleaseDate = DateTime.Parse("2018-1-12"), Author = "埃里克·馬瑟斯", Price = 75.99M, Publishing="機械出版社" },
2. 在Visual Studio 2017菜單中選擇生成->生成解決方案
3.在Visual Studio 2017的菜單中選擇“工具”菜單-->“NuGet 包管理器”>“包管理器控制台”。 如下圖。
4. 在 PMC 中,輸入以下命令,如圖:
Add-Migration Publishing
Add-Migration 指令會通知框架執行以下操作:
1) 將 Book實體類與 數據庫中的Book表進行比較。
2) 創建代碼以將在數據庫中對表Books表結構進行更新。如下圖。
3) Visual Studio 2017對於有新字段“Publishing”的遷移文件的命名是當前日期+字段名稱。這樣命名這樣有助於管理。如下圖。
5. 在執行完上面的指令之后,在 PMC 中,輸入以下命令,如圖:
Update-Database
7. 在執行完以上指令之后,在數據庫中添加了Publishing字段。如下圖。
8. 雖然我們把字段添加 到數據庫,但是這個字段,卻是沒有數據的。如下圖。
那如何給字段同值呢?
- 如果你是開發,而且已經修改了初始化類SeedData類。那么可以參考(學習ASP.NET Core Razor 編程系列六——數據庫初始化)給數據庫初始化數據。
- 如果你把所有的記錄從數據庫中刪除。你可以在瀏覽器中打開書籍列表頁面,然后使用刪除鏈接刪除記錄,也可以使用SQL Server對象資源管理器(SQL Server Management Studio)使用SQL語句把數據從數據庫中刪除。
現在我們在visual studio 2017中按F5運行應用程序,應用程序不會在如上一篇文章那樣報錯了。在應用程序運行起來之后,在瀏覽器中分別打開創建/編輯/列表頁面,驗證這些頁面中是否已經有了publishing 字段的書籍信息。如下圖。
列表頁面:
創建頁面:
編輯頁面: