在經過了上面篇文章的學習之後,本篇文章我們來學習如何使用 Entity Framework Code First 遷移功能將新欄位添加到模型,並且同時將新欄位添加到資料庫中。 使用 EF Code First 自動創建資料庫時,Code First 會向資料庫添加一個表,以... ...
學習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 欄位的書籍信息。如下圖。
列表頁面:
創建頁面:
編輯頁面: