ASP.NET CORE RAZOR :向 Razor 頁面應用添加模型


本文來自:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/model

在本部分中將添加用於管理數據庫中的電影的類。 可以結合使用這些類和 Entity Framework Core (EF Core) 來處理數據庫。 EF Core 是對象關系映射 (ORM) 框架,可以簡化必須要編寫的數據訪問代碼。
要創建的模型類稱為 POCO 類(源自“簡單傳統 CLR 對象”),因為它們與 EF Core 沒有任何依賴關系。 它們定義數據庫中存儲的數據屬性。
在本教程中,首先要編寫模型類,然后 EF Core 將創建數據庫。 有一種備選方法(此處未介紹):從現有數據庫生成模型類

添加數據模型
在解決方案資源管理器中,右鍵單擊“RazorPagesMovie”項目 >“添加” > “新建文件夾”。 將文件夾命名為“Models”。
右鍵單擊“Models”文件夾。 選擇“添加” > “類”。 將類命名為“Movie”,並添加以下屬性:
向 Movie 類添加以下屬性:

 1 using System;
 2 
 3 namespace RazorPagesMovie.Models
 4 {
 5     public class Movie
 6     {
 7         public int ID { get; set; }
 8         public string Title { get; set; }
 9         public DateTime ReleaseDate { get; set; }
10         public string Genre { get; set; }
11         public decimal Price { get; set; }
12     }
13 }

數據庫需要 ID 字段作為主鍵。ID字段應該是EF的要求。

添加數據庫上下文類

向“Models”文件夾添加以下名為 MovieContext.cs 的 DbContext 派生類:(這里要引入Microsoft.EntityFrameworkCore命名空間,結合EF,DB first)

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Models
{
    public class MovieContext : DbContext
    {
        public MovieContext(DbContextOptions<MovieContext> options)
                : base(options)
        {
        }

        public DbSet<Movie> Movie { get; set; }
    }
}

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


添加數據庫連接字符串

將連接字符串添加到 appsettings.json 文件。

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=192.168.137.216;Database=MovieCore;User Id=sa;Password=aaa;"
  }
}

 

注冊數據庫上下文

使用 Startup.cs 文件中的依存關系注入容器注冊數據庫上下文。需要引用命名空間:using RazorPagesMovie.Models;

public void ConfigureServices(IServiceCollection services)
{
    // requires 
    // using RazorPagesMovie.Models;
    // using Microsoft.EntityFrameworkCore;

    services.AddDbContext<MovieContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
    services.AddMvc();
}

生成項目以驗證有沒有任何錯誤存在。(現在運行網站雖然是成功的,但是數據庫還沒有自動添加)

 

 

添加基架工具並執行初始遷移
在本部分中,使用程序包管理器控制台 (PMC) 執行以下操作:
添加 Visual Studio Web 代碼生成包。 必須添加此包才能運行基架引擎。
添加初始遷移。
使用初始遷移來更新數據庫。
從“工具”菜單中,選擇“NuGet 包管理器” > “包管理器控制台”。

 

在 PMC 中,輸入以下命令:

Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
Add-Migration Initial
Update-Database

Install-Package 命令安裝運行基架引擎所需的工具。
Add-Migration 命令生成用於創建初始數據庫架構的代碼。 此架構以(Models/MovieContext.cs 文件中的)DbContext 中指定的模型為基礎。 Initial 參數用於為遷移命名。 可以使用任意名稱,但是按照慣例應選擇描述遷移的名稱。 有關詳細信息,請參閱遷移簡介。
Update-Database 命令在用於創建數據庫的 Migrations/<time-stamp>_InitialCreate.cs 文件中運行 Up 方法。


搭建“Movie”模型的基架(就是自動生成添加、修改、刪除、列表等頁面)

按下圖提示操作

 

從命令行(在包含 Program.cs、Startup.cs 和 .csproj 文件的項目目錄中)中運行如下命令:

dotnet aspnet-codegenerator razorpage -m Movie -dc MovieContext -udl -outDir Pages\Movies --referenceScriptLibraries

 執行完畢后顯示

如果收到錯誤:

No executable found matching command "dotnet-aspnet-codegenerator"

打開一個到項目目錄(包含 Program.cs、Startup.cs 和 .csproj 文件的目錄)的命令 shell。
如果收到錯誤:

The process cannot access the file 
'RazorPagesMovie/bin/Debug/netcoreapp2.0/RazorPagesMovie.dll' 
because it is being used by another process.

退出 Visual Studio,然后重新運行命令。
下表詳細說明了 ASP.NET Core 代碼生成器的參數:

參數 描述
-m 模型的名稱。
-dc 數據上下文。
-udl 使用默認布局。
-outDir 用於創建視圖的相對輸出文件夾路徑。
--referenceScriptLibraries 向“編輯”和“創建”頁面添加 _ValidationScriptsPartial


使用 h 開關獲取 aspnet-codegenerator razorpage 命令方面的幫助:

dotnet aspnet-codegenerator razorpage -h

測試應用

運行應用並將 /Movies 追加到瀏覽器中的 URL (http://localhost:port/movies)。
測試“創建”鏈接。

測試“編輯”、“詳細信息”和“刪除”鏈接。
如果收到 SQL 異常,則驗證是否已運行遷移並更新了數據庫:
下一個教程介紹由基架創建的文件。

 

 

 

 

 

 

 

 






 


免責聲明!

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



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