鍍金池/ 教程/ Java/ MVC框架 - 模型
MVC框架 - 異常處理
MVC框架架構
MVC框架 ASP.NET表單
MVC框架 - 高級示例
MVC框架 - 捆綁
MVC框架 - 文件夾
MVC框架 - 控制器
MVC框架 - 模型
MVC框架 - 視圖
MVC框架 - 路由引擎
MVC框架 - 第一個應用程序
MVC框架 - AJAX支持
MVC框架教程
MVC框架 - 布局
MVC框架 - 動作過濾器

MVC框架 - 模型

模型負責管理應用程序的數(shù)據(jù)。它響應視圖的請求,同時也響應指令從控制器到自我更新。

模型類可以手動創(chuàng)建或從數(shù)據(jù)庫實體創(chuàng)建產生。 我們將看到很多手動創(chuàng)建模型的例子在接下來的章節(jié)中。因此,在本章中,我們將嘗試另一種選擇,即從數(shù)據(jù)庫中生成,使有自動和手動兩種方法。

創(chuàng)建數(shù)據(jù)庫實體

連接到SQL Server,并創(chuàng)建一個新的數(shù)據(jù)庫。

connect_sql_server

現(xiàn)在,運行以下查詢語句來創(chuàng)建新表:

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
)

使用數(shù)據(jù)庫實體生成模型

創(chuàng)建數(shù)據(jù)庫并設置了表之后,你可以繼續(xù)前進,創(chuàng)建一個新空的MVC應用程序。 現(xiàn)在,在您的項目右鍵點擊Models文件夾,并選擇Add->New 項并選擇ADO.NET 實體數(shù)據(jù)模型。

add_new_model_step_1
add_new_model_step_2

在接下來的向導中,選擇生成數(shù)據(jù)庫,然后單擊下一步。設置連接到SQL數(shù)據(jù)庫。

add_new_model_test_connection

選擇數(shù)據(jù)庫并單擊測試連接。與此類似,屏幕將會隨之顯示。點擊下一步。

add_new_model_test_connection_step_2

選擇表,視圖和存儲過程和函數(shù),然后單擊完成。將看到模型視圖創(chuàng)建是這樣的:

new_mvc_model

上述操作將自動創(chuàng)建所有的數(shù)據(jù)庫實體模型文件。示例,我們創(chuàng)建的學生表將產生一個模型文件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; }
    }
}