다음을 통해 공유


자습서: MVC 5를 사용하여 EF Database First 시작

MVC, Entity Framework 및 ASP.NET 스캐폴딩을 사용하여 기존 데이터베이스에 대한 인터페이스를 제공하는 웹 애플리케이션을 만들 수 있습니다. 이 자습서 시리즈에서는 사용자가 데이터베이스 테이블에 있는 데이터를 표시, 편집, 생성 및 삭제할 수 있는 코드를 자동으로 생성하는 방법을 보여 줍니다. 생성된 코드는 데이터베이스 테이블의 열에 해당합니다. 시리즈의 마지막 부분에서는 데이터 모델에 데이터 주석을 추가하여 유효성 검사 요구 사항을 지정하고 서식을 표시하는 방법을 알아봅니다. 완료되면 Azure 문서로 이동하여 .NET 앱 및 SQL 데이터베이스를 Azure App Service 배포하는 방법을 알아볼 수 있습니다.

이 자습서에서는 기존 데이터베이스로 시작하고 사용자가 데이터와 상호 작용할 수 있는 웹 애플리케이션을 빠르게 만드는 방법을 보여 줍니다. Entity Framework 6 및 MVC 5를 사용하여 웹 애플리케이션을 빌드합니다. ASP.NET 스캐폴딩 기능을 사용하면 데이터를 표시, 업데이트, 만들기 및 삭제하기 위한 코드를 자동으로 생성할 수 있습니다. Visual Studio 내에서 게시 도구를 사용하여 사이트 및 데이터베이스를 Azure에 쉽게 배포할 수 있습니다.

시리즈의 이 부분에서는 데이터베이스를 만들고 데이터로 채우는 데 중점을 둡니다.

이 시리즈는 톰 다이크스트라와 릭 앤더슨의 기여 함께 작성되었습니다. 댓글 섹션에 있는 사용자의 피드백에 따라 개선되었습니다.

이 자습서에서는 다음을 수행합니다.

  • 데이터베이스 설정

사전 요구 사항

Visual Studio 2017

데이터베이스 설정

기존 데이터베이스가 있는 환경을 모방하기 위해 먼저 미리 채워진 데이터가 있는 데이터베이스를 만든 다음 데이터베이스에 연결하는 웹 애플리케이션을 만듭니다.

이 자습서는 Visual Studio 2017에서 LocalDB를 사용하여 개발되었습니다. LocalDB 대신 기존 데이터베이스 서버를 사용할 수 있지만 Visual Studio 버전 및 데이터베이스 유형에 따라 Visual Studio의 모든 데이터 도구가 지원되지 않을 수 있습니다. 데이터베이스에 도구를 사용할 수 없는 경우 데이터베이스에 대한 관리 도구 모음 내에서 데이터베이스 관련 단계 중 일부를 수행해야 할 수 있습니다.

Visual Studio 버전에서 데이터베이스 도구에 문제가 있는 경우 최신 버전의 데이터베이스 도구를 설치했는지 확인합니다. 데이터베이스 도구를 업데이트하거나 설치하는 방법에 대한 자세한 내용은 Microsoft SQL Server Data Tools 참조하세요.

Visual Studio를 시작하고 SQL Server 데이터베이스 프로젝트를 만듭니다. 프로젝트 이름을 ContosoUniversityData로 지정합니다.

데이터베이스 프로젝트 만들기

이제 빈 데이터베이스 프로젝트가 있습니다. 이 데이터베이스를 Azure에 배포할 수 있도록 Azure SQL 데이터베이스를 프로젝트의 대상 플랫폼으로 설정합니다. 대상 플랫폼을 설정해도 데이터베이스는 실제로 배포되지 않습니다. 데이터베이스 프로젝트가 데이터베이스 디자인이 대상 플랫폼과 호환되는지 확인한다는 의미일 뿐입니다. 대상 플랫폼을 설정하려면 프로젝트의 속성을 열고 대상 플랫폼에 대한 Microsoft Azure SQL Database 선택합니다.

테이블을 정의하는 SQL 스크립트를 추가하여 이 자습서에 필요한 테이블을 만들 수 있습니다. 프로젝트를 마우스 오른쪽 단추로 클릭하고 새 항목을 추가합니다. 테이블 및 뷰>테이블을 선택하고 이름을 Student로 지정합니다.

테이블 파일에서 T-SQL 명령을 다음 코드로 바꿔 테이블을 만듭니다.

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)
)

디자인 창이 코드와 자동으로 동기화됩니다. 코드 또는 디자이너로 작업할 수 있습니다.

코드 및 디자인 표시

다른 테이블을 추가합니다. 이번에는 이름을 Course로 지정하고 다음 T-SQL 명령을 사용합니다.

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
)

데이터베이스가 배포된 후 실행되는 스크립트를 통해 데이터베이스를 데이터로 채울 수 있습니다. 프로젝트에 배포 후 스크립트를 추가합니다. 프로젝트를 마우스 오른쪽 단추로 클릭하고 새 항목을 추가합니다. 배포 후사용자 스크립트>를 선택합니다. 기본 이름을 사용할 수 있습니다.

배포 후 스크립트에 다음 T-SQL 코드를 추가합니다. 이 스크립트는 일치하는 레코드를 찾을 수 없는 경우 데이터베이스에 데이터를 추가합니다. 데이터베이스에 입력한 데이터는 덮어쓰거나 삭제하지 않습니다.

MERGE INTO Course AS Target 
USING (VALUES 
        (1, 'Economics', 3), 
        (2, 'Literature', 3), 
        (3, 'Chemistry', 4)
) 
AS Source (CourseID, Title, Credits) 
ON Target.CourseID = Source.CourseID 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (Title, Credits) 
VALUES (Title, Credits);

MERGE INTO Student AS Target
USING (VALUES 
        (1, 'Tibbetts', 'Donnie', '2013-09-01'), 
        (2, 'Guzman', 'Liza', '2012-01-13'), 
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);

MERGE INTO Enrollment AS Target
USING (VALUES 
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);

배포 후 스크립트는 데이터베이스 프로젝트를 배포할 때마다 실행됩니다. 따라서 이 스크립트를 작성할 때 요구 사항을 신중하게 고려해야 합니다. 경우에 따라 프로젝트가 배포될 때마다 알려진 데이터 집합에서 다시 시작하는 것이 좋습니다. 다른 경우에는 기존 데이터를 어떤 방식으로도 변경하지 않을 수 있습니다. 요구 사항에 따라 배포 후 스크립트가 필요한지 아니면 스크립트에 포함해야 하는지 결정할 수 있습니다. 배포 후 스크립트로 데이터베이스를 채우는 방법에 대한 자세한 내용은 SQL Server 데이터베이스 프로젝트에 데이터 포함을 참조하세요.

이제 4개 SQL 스크립트 파일이 있지만 실제 테이블은 없습니다. localdb에 데이터베이스 프로젝트를 배포할 준비가 된 것입니다. Visual Studio에서 시작 단추(또는 F5)를 클릭하여 데이터베이스 프로젝트를 빌드하고 배포합니다. 출력 탭을 확인하여 빌드 및 배포가 성공했는지 확인합니다.

새 데이터베이스가 만들어졌는지 확인하려면 SQL Server 개체 탐색기 열고 올바른 로컬 데이터베이스 서버(이 경우 (localdb)\ProjectsV13)에서 프로젝트 이름을 찾습니다.

테이블이 데이터로 채워져 있는지 확인하려면 테이블을 마우스 오른쪽 단추로 클릭하고 데이터 보기를 선택합니다.

테이블 데이터 표시

테이블 데이터의 편집 가능한 보기가 표시됩니다. 예를 들어 테이블>dbo.course>데이터 보기를 선택하면 세 개의 열(과정, 제목크레딧)과 4개의 행이 있는 테이블이 표시됩니다.

추가 리소스

Code First 개발의 소개 예제는 ASP.NET MVC 5를 사용한 시작 참조하세요. 고급 예제는 ASP.NET MVC 4 앱에 대한 Entity Framework 데이터 모델 만들기를 참조하세요.

사용할 Entity Framework 접근 방식을 선택하는 방법에 대한 지침은 Entity Framework 개발 방법을 참조하세요.

다음 단계

이 자습서에서는 다음을 수행합니다.

  • 데이터베이스 설정

웹 애플리케이션 및 데이터 모델을 만드는 방법을 알아보려면 다음 자습서로 진행합니다.