Code First 마이그레이션 사용하여 데이터베이스 시드

완료된 프로젝트 다운로드

이 섹션에서는 EF의 Code First 마이그레이션 사용하여 테스트 데이터로 데이터베이스를 시드합니다.

도구 메뉴에서 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택합니다. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.

Enable-Migrations

이 명령은 프로젝트에 Migrations라는 폴더와 Migrations 폴더에 Configuration.cs라는 코드 파일을 추가합니다.

구성 점 c의 파일이 파란색으로 강조 표시된 폴더 계층 구조를 보여 주는 솔루션 탐색기 스크린샷

Configuration.cs 파일을 엽니다. 다음 using 문을 추가합니다.

using BookService.Models;

그런 다음 Configuration.Seed 메서드에 다음 코드를 추가합니다.

protected override void Seed(BookService.Models.BookServiceContext context)
{
    context.Authors.AddOrUpdate(x => x.Id,
        new Author() { Id = 1, Name = "Jane Austen" },
        new Author() { Id = 2, Name = "Charles Dickens" },
        new Author() { Id = 3, Name = "Miguel de Cervantes" }
        );

    context.Books.AddOrUpdate(x => x.Id,
        new Book() { Id = 1, Title = "Pride and Prejudice", Year = 1813, AuthorId = 1, 
            Price = 9.99M, Genre = "Comedy of manners" },
        new Book() { Id = 2, Title = "Northanger Abbey", Year = 1817, AuthorId = 1, 
            Price = 12.95M, Genre = "Gothic parody" },
        new Book() { Id = 3, Title = "David Copperfield", Year = 1850, AuthorId = 2, 
            Price = 15, Genre = "Bildungsroman" },
        new Book() { Id = 4, Title = "Don Quixote", Year = 1617, AuthorId = 3, 
            Price = 8.95M, Genre = "Picaresque" }
        );
}

패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.

Add-Migration Initial
Update-Database

첫 번째 명령은 데이터베이스를 만드는 코드를 생성하고 두 번째 명령은 해당 코드를 실행합니다. 데이터베이스는 LocalDB를 사용하여 로컬로 만들어집니다.

마이그레이션 사용, 마이그레이션 초기 추가 및 데이터베이스 업데이트 줄이 빨간색으로 동그라미로 표시된 패키지 관리자 콘솔 창의 스크린샷

API 탐색(선택 사항)

F5 키를 눌러 디버그 모드에서 애플리케이션을 실행합니다. Visual Studio는 IIS Express 시작하고 웹앱을 실행합니다. 그런 다음 Visual Studio에서 브라우저를 시작하고 앱의 홈페이지를 엽니다.

Visual Studio에서 웹 프로젝트를 실행하면 포트 번호가 할당됩니다. 아래 이미지에서 포트 번호는 50524입니다. 애플리케이션을 실행하면 다른 포트 번호가 표시됩니다.

AP I 링크가 빨간색으로 원을 그리고 빨간색 화살표로 강조 표시된 디버그 모드의 Visual Studio에서 시작된 애플리케이션 창의 스크린샷

홈페이지는 ASP.NET MVC를 사용하여 구현됩니다. 페이지 맨 위에는 "API"라는 링크가 있습니다. 이 링크를 통해 웹 API에 대한 자동 생성된 도움말 페이지로 이동합니다. (이 도움말 페이지가 생성되는 방법과 페이지에 고유한 설명서를 추가하는 방법을 알아보려면 ASP.NET Web API 대한 도움말 페이지 만들기를 참조하세요.) 도움말 페이지 링크를 클릭하여 요청 및 응답 형식을 포함하여 API에 대한 세부 정보를 볼 수 있습니다.

API 기능에 대한 설명서에 대한 링크 목록을 보여 주는 자동 생성 도움말 페이지의 스크린샷

API를 사용하면 데이터베이스에서 CRUD 작업을 수행할 수 있습니다. 다음은 API를 요약한 것입니다.

Authors Description
GET api/authors 모든 작성자 가져오기
GET api/authors/{id} ID로 작성자 가져오기
POST /api/authors 새 작성자를 만듭니다.
PUT /api/authors/{id} 기존 작성자 업데이트
DELETE /api/authors/{id} 작성자 삭제
Description
GET /api/books 모든 책을 가져옵니다.
GET /api/books/{id} ID로 책을 가져옵니다.
POST /api/books 새 책을 만듭니다.
PUT /api/books/{id} 기존 책을 업데이트합니다.
DELETE /api/books/{id} 책을 삭제합니다.

데이터베이스 보기(선택 사항)

Update-Database 명령을 실행하면 EF에서 데이터베이스를 만들고 메서드를 호출했습니다 Seed . 애플리케이션을 로컬로 실행하는 경우 EF는 LocalDB를 사용합니다. Visual Studio에서 데이터베이스를 볼 수 있습니다. 보기 메뉴에서 SQL Server 개체 탐색기를 선택합니다.

파란색으로 강조 표시된 S QL Server 항목과 노란색으로 강조 표시된 S QL Server 추가 항목을 보여 주는 S QL Server 개체 탐색기 스크린샷

서버에 연결 대화 상자의 서버 이름 편집 상자에 "(localdb)\v11.0"을 입력합니다. 인증 옵션을 "Windows 인증"으로 둡니다. 연결을 클릭합니다.

서버 이름 필드에 로컬 d b v 11 dot 0 텍스트가 표시되고 파란색으로 강조 표시된 서버에 연결 대화 상자의 스크린샷

Visual Studio는 LocalDB에 연결하고 SQL Server 개체 탐색기 창에 기존 데이터베이스를 표시합니다. 노드를 확장하여 EF가 만든 테이블을 볼 수 있습니다.

Book Service Context 항목이 파란색으로 강조 표시된 폴더 계층 구조를 보여 주는 S QL Server 개체 탐색기 스크린샷

데이터를 보려면 테이블을 마우스 오른쪽 단추로 클릭하고 데이터 보기를 선택합니다.

파란색으로 강조 표시된 d b o dot Books 항목과 노란색으로 강조 표시된 데이터 보기 항목을 보여 주는 S QL Server 개체 탐색기 스크린샷

다음 스크린샷은 Books 테이블의 결과를 보여줍니다. EF는 데이터베이스를 시드 데이터로 채웠고 테이블에 Authors 테이블에 대한 외래 키가 포함되어 있습니다.

시드 데이터로 채워진 데이터베이스와 외래 키가 포함된 테이블을 보여 주는 Books 테이블의 스크린샷