MVC 프레임 워크-모델

구성 요소 '모델'은 응용 프로그램의 데이터를 관리합니다. 뷰의 요청에 응답하고 컨트롤러의 명령에 응답하여 자체 업데이트합니다.

모델 클래스는 수동으로 만들거나 데이터베이스 엔터티에서 생성 할 수 있습니다. 다음 장에서 모델을 수동으로 생성하는 많은 예제를 볼 것입니다. 따라서이 장에서는 다른 옵션, 즉 데이터베이스에서 생성하여 두 가지 방법 모두에 대한 실무 경험을 제공합니다.

데이터베이스 엔터티 생성

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 엔터티 데이터 모델을 선택합니다.

다음 마법사에서 데이터베이스에서 생성을 선택하고 다음을 클릭합니다. SQL 데이터베이스에 대한 연결을 설정하십시오.

데이터베이스를 선택하고 연결 테스트를 클릭하십시오. 다음과 유사한 화면이 나타납니다. 다음을 클릭하십시오.

테이블, 뷰, 저장 프로 시저 및 함수를 선택합니다. 마침을 클릭합니다. 다음 스크린 샷과 같이 생성 된 모델 뷰가 표시됩니다.

위의 작업은 모든 데이터베이스 엔티티에 대한 모델 파일을 자동으로 생성합니다. 예를 들어, 우리가 만든 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; } 
   } 
}