創建基於ASP.NET core 3.1 的RazorPagesMovie項目(二)-應用模型類配合基架生成工具生成Razor頁面


本節中,將學習添加用於管理跨平台的SQLLite數據庫中的電影的類Movie。從ASP.NET core 模板創建的應用使用SQLLite數據庫。

應用模型類(Movie)配合Entity Framework core(簡稱EF core,這是一種對象關系映射框架(ORM),它可以簡化數據訪問)使用,以處理數據庫

模型類稱為POCO類,因為它們與EF Core 沒有任何依賴關系。它定義了數據庫中存儲的數據屬性。

 

一、添加數據模型“Movie”

  1、右鍵單擊“RazorPagesMovie”項目>"添加">"新建文件夾"。並命名為“Models”

                             

 

 

 

   2、右鍵“Models”文件夾,選擇“添加”>"類",並將新類命名為“Movie”:

  

 

 

   3、雙擊Movie.cs文件,並添加以下屬性:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;    //需要手動引用這個名稱控件
using System.Linq;
using System.Threading.Tasks;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }             //定義數據庫的主鍵
        public string Title { get; set; }       //電影名稱

        //DataType屬性指定數據的類型是日期。通過此用法:1、用戶無需在數據字段中輸入時間信息(系統會自動提供一個日期控件);2、僅顯示日期,不顯示時間信息
        //這個需要引用System.ComponentModel.DataAnnotations 名稱空間
        [DataType(DataType.Date)]       
        public DateTime ReleaseDate { get; set; }  //電影發行日期
        public string Genre { get; set; }       // 電影的流派、主題
        public decimal Price { get; set; }      //電影價格
    }
}

  4、‘生成解決方法’,確保沒有編譯錯誤:

  

 

 

 

 二、搭建“Movie”模型的基架

  此部分,將使用基架工具生成頁面,用於對“Movie”模型執行創建、讀取、更新、刪除操作。俗稱CRUD。

 

 

   1、創建Pages/Movies文件夾:

    右鍵“Pages”文件夾>"添加">“新建文件夾”,並將新文件夾命名為“Movies”:

       

 

 

 

  2、在新建的Movies文件夾上右鍵單擊>"添加">"新搭建基架的項目"

   

 

 

   在彈出的“添加已搭建基架的新項”對話框中,選擇“使用實體框架生成Razor頁面(CRUD)”之后,點擊“添加”:

  

 

 

   在彈出的“添加使用實體框架生成Razor頁面(CRUD)”對話框中操作如下:

  ‘模型類’的下拉列表中選擇“Movie(RazorPagesMovie.Models)”;

  “數據上下文”中,選擇+(加號),在彈出的“添加數據上下文”對話框中,將自動生成具有正確命名空間的數據庫上下文類:RazorPagesMovie.Data.RazorPagesMovieContext。選擇“添加”

  最后,選擇“添加”。

  

 

  然后系統開始自動搭建基架:

 

   

 

 

   上述步驟完成后,我們觀察‘解決方案資源管理器’中發生了如下變化:

    ① appsettings.json文件:增加了用於連接到本地數據庫的連接字符串

     

 

 

 

    ② Pages/Movies文件夾中,新增了5個文件(Create.cshtml、Delete.cshtml、Details.cshtml、Edit.cshtml、Index.cshtml),分別表示創建、刪除、詳細信息、編輯和索引

    ③ Data文件夾中,新增了1個文件:RazorPagesMovieContent.cs

    

 

 

    ④ Startup.cs文件中,更新了我們剛才新建的數據庫上下文RazorPagesMovieContext:

    

 

 

 

3、初始遷移

  該部分,我們將學習使用程序包管理器控制台(PMC),它用於:

  添加初始遷移、使用初始遷移來更新數據庫

  ① “工具”>“NuGet包管理器”>“程序包管理器控制台”:

    

 

 

   ② 將會默認在VS2019下方打開PMC窗口。

    分別在控制台中輸入以下指令:

    Add-Migration InitialCreate

    Update-Database

    其中:migration命令,可以生成用於創建初始數據庫架構的代碼。該架構基於在DbContent中指定的模型;

      InitialCreate參數,用於為遷移命名。可以使用任何名稱。

      Update命令,表示在尚未應用的遷移中運行Up方法。這種情況下,update在用於創建數據庫的Migrations/<time-stamp>_InitialCreate.cs文件中運行Up方法。

    

 

 

    注意:這兩個命令會生成同樣的一個警告(其實是提示我們定義的模型類Movie中Price字段的屬性decimal是沒有指定的類型):

    Microsoft.EntityFrameworkCore.Model.Validation[30000]
    No type was specified for the decimal column 'Price' on entity type 'Movie'.…………

   我們暫時忽略該警告。它將在后面的教程中得到修復。

  ③ 此時,觀察解決方案資源管理器,發現多了如下的內容:

     

 

 

4、最后檢查的工作,初始遷移后,檢查通過依賴關系注入注冊的上下文

  ASP.NET Core 通過依賴關系注入進行生成。服務在程序啟動期間通過依賴關系注入進行注冊。需要這些服務的組件(比如這里的Razor頁面)通過構造函數提供相應的服務。

  基架工具自動創建DB上下文並將其注冊到依賴關系注入容器。

  ① 檢查Startup.ConfigureServices方法,添加了以下代碼:

    

 

   ② /Data/RazorPagesMovieContext.cs文件為Movie模型協調EF Core 功能。它派生自Microsoft.EntityFramworkCore.DbContent。數據上下文指定數據模型中包含哪些實體:

    

 

      上面的代碼,為實體集創建DbSet屬性。在實體框架術語中,實體集通常和數據表相對應,實體對應表中的行。

    通過調用DBContentOptions對象中的一個方法將連接字符串名稱傳遞到上下文。本地開發時,ASP.NET Core配置系統在appsettings.json文件中讀取數據庫連接字符串。

 

  5、測試

    ① 按下ctrl+F5,運行程序,並在地址欄中將/movies追加到原來的URL之后:

    

 

     ② 點擊“Create New”,在打開的添加電影記錄頁面中錄入新的記錄:

        

    ③ 可以對剛新加的電影,進行“Edit”、“Details”、“Delete”操作。

 

 

 

  下一個文章中,我們將介紹本節中通過搭建基架生成的Razor頁面,並做一些UI的改動。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM