MVC框架 - 模型



“模型”元件負責管理應用程式的資料。它響應來自檢視的請求,也響應來自控制器的更新自身指令。

模型類可以手動建立,也可以從資料庫實體生成。在接下來的章節中,我們將看到許多手動建立模型的示例。因此,在本章中,我們將嘗試另一種方法,即從資料庫生成,以便您能夠實際操作這兩種方法。

建立資料庫實體

連線到SQL Server並建立一個新的資料庫。

Connect SQL Server

現在執行以下查詢以建立新表。

CREATE TABLE [dbo].[Student]( 
   [StudentID]      INT           IDENTITY (1,1) NOT NULL, 
   [LastName]       NVARCHAR (50) NULL, 
   [FirstName]      NVARCHAR (50) NULL, 
   [EnrollmentDate] DATETIME      NULL, 
   PRIMARY KEY CLUSTERED ([StudentID] ASC) 
)  

CREATE TABLE [dbo].[Course]( 
   [CourseID] INT           IDENTITY (1,1) NOT NULL, 
   [Title]    NVARCHAR (50) NULL, 
   [Credits]  INT           NULL, 
   PRIMARY KEY CLUSTERED ([CourseID] ASC) 
)  

CREATE TABLE [dbo].[Enrollment]( 
   [EnrollmentID] INT IDENTITY (1,1) NOT NULL, 
   [Grade]        DECIMAL(3,2) NULL, 
   [CourseID]     INT NOT NULL, 
   [StudentID]    INT NOT NULL, 
   PRIMARY KEY CLUSTERED ([EnrollmentID] ASC), 
      CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID]) 
   REFERENCES [dbo].[Course]([CourseID]) ON DELETE CASCADE, 
      CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID]) 
   REFERENCES [dbo].[Student]([StudentID]) ON DELETE CASCADE 
)

使用資料庫實體生成模型

建立資料庫並設定表後,您可以繼續建立一個新的MVC空應用程式。右鍵單擊專案中的Models資料夾,然後選擇“新增”→“新建項”。然後,選擇ADO.NET實體資料模型。

Add New Model Step 1

Add New Model Step 2

在下一個嚮導中,選擇“從資料庫生成”,然後單擊“下一步”。將連線設定為您的SQL資料庫。

Add New Model Test Connection

選擇您的資料庫並單擊“測試連線”。接下來將顯示類似於以下的螢幕。單擊“下一步”。

Add New Model Test Connection Step 2

選擇表、檢視和儲存過程和函式。單擊“完成”。您將看到建立的模型檢視,如下面的螢幕截圖所示。

New MVC Model

上述操作將自動為所有資料庫實體建立一個模型檔案。例如,我們建立的Student表將生成一個包含以下程式碼的模型檔案Student.cs:

namespace MvcModelExample.Models { 
   using System; 
   using System.Collections.Generic; 
     
   public partial class Student { 
      
      public Student() { 
         this.Enrollments = new HashSet(); 
      } 
     
      public int StudentID { get; set; } 
      public string LastName { get; set; } 
      public string FirstName { get; set; } 
      public Nullable EnrollmentDate { get; set; } 
      public virtual ICollection Enrollments { get; set; } 
   } 
}
廣告