Code First 마이그레이션를 사용 하 여 데이터베이스 시드Use Code First Migrations to Seed the Database

Mike Wassonby Mike Wasson

완료 된 프로젝트 다운로드Download Completed Project

이 섹션에서는 EF에서 Code First 마이그레이션 를 사용 하 여 테스트 데이터로 데이터베이스를 초기값으로 사용 합니다.In this section, you will use Code First Migrations in EF to seed the database with test data.

도구 메뉴에서 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택 합니다.From the Tools menu, select NuGet Package Manager, then select Package Manager Console. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.In the Package Manager Console window, enter the following command:

Enable-Migrations

이 명령은 마이그레이션 폴더에 migration 이라는 폴더와 Configuration.cs 이라는 코드 파일을 추가 합니다.This command adds a folder named Migrations to your project, plus a code file named Configuration.cs in the Migrations folder.

Configuration.cs 파일을 엽니다.Open the Configuration.cs file. 다음 using 문을 추가 합니다.Add the following using statement.

using BookService.Models;

그런 다음, 다음 코드를 구성 초기값 메서드에 추가 합니다.Then add the following code to the Configuration.Seed method:

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" }
        );
}

패키지 관리자 콘솔 창에서 다음 명령을 입력 합니다.In the Package Manager Console window, type the following commands:

Add-Migration Initial
Update-Database

첫 번째 명령은 데이터베이스를 만드는 코드를 생성 하 고, 두 번째 명령은 해당 코드를 실행 합니다.The first command generates code that creates the database, and the second command executes that code. 데이터베이스는 LocalDB를 사용 하 여 로컬로 만들어집니다.The database is created locally, using LocalDB.

API 탐색 (선택 사항)Explore the API (Optional)

F5 키를 눌러 디버그 모드에서 애플리케이션을 실행합니다.Press F5 to run the application in debug mode. Visual Studio가 IIS Express를 시작 하 고 웹 앱을 실행 합니다.Visual Studio starts IIS Express and runs your web app. 그러면 Visual Studio가 브라우저를 시작 하 고 앱의 홈 페이지를 엽니다.Visual Studio then launches a browser and opens the app's home page.

Visual Studio에서 웹 프로젝트를 실행 하는 경우 포트 번호를 할당 합니다.When Visual Studio runs a web project, it assigns a port number. 아래 이미지에서 포트 번호는 50524입니다.In the image below, the port number is 50524. 응용 프로그램을 실행 하면 다른 포트 번호가 표시 됩니다.When you run the application, you'll see a different port number.

홈 페이지는 ASP.NET MVC를 사용 하 여 구현 됩니다.The home page is implemented using ASP.NET MVC. 페이지 위쪽에 "API" 라는 링크가 있습니다.At the top of the page, there is a link that says "API". 이 링크를 통해 web API에 대 한 자동 생성 된 도움말 페이지로 이동할 수 있습니다.This link brings you to an auto-generated help page for the web API. 이 도움말 페이지가 생성 되는 방법 및 페이지에 사용자 고유의 설명서를 추가 하는 방법에 대 한 자세한 내용은 ASP.NET Web API에 대 한 도움말 페이지 만들기를 참조 하세요. 도움말 페이지 링크를 클릭 하면 요청 및 응답 형식을 포함 하 여 API에 대 한 세부 정보를 볼 수 있습니다.(To learn how this help page is generated, and how you can add your own documentation to the page, see Creating Help Pages for ASP.NET Web API.) You can click on the help page links to see details about the API, including the request and response format.

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

AuthorsAuthors
GET api/authorsGET api/authors 모든 작성자를 가져옵니다.Get all authors.
GET api/authors/{id}GET api/authors/{id} ID 별로 작성자를 가져옵니다.Get an author by ID.
POST /api/authorsPOST /api/authors 새 저자를 만듭니다.Create a new author.
PUT /api/authors/{id}PUT /api/authors/{id} 기존 작성자를 업데이트 합니다.Update an existing author.
DELETE /api/authors/{id}DELETE /api/authors/{id} 작성자를 삭제 합니다.Delete an author.
서적Books
GET /api/booksGET /api/books 모든 책을 가져옵니다.Get all books.
GET /api/books/{id}GET /api/books/{id} ID 별로 책을 가져옵니다.Get a book by ID.
POST /api/booksPOST /api/books 새 책을 만듭니다.Create a new book.
PUT /api/books/{id}PUT /api/books/{id} 기존 책을 업데이트 합니다.Update an existing book.
DELETE /api/books/{id}DELETE /api/books/{id} 책을 삭제 합니다.Delete a book.

데이터베이스 보기 (옵션)View the Database (Optional)

데이터베이스 업데이트 명령을 실행 한 경우 EF는 데이터베이스를 만들고 Seed 메서드를 호출 했습니다.When you ran the Update-Database command, EF created the database and called the Seed method. 응용 프로그램을 로컬로 실행 하는 경우 EF는 LocalDB를 사용 합니다.When you run the application locally, EF uses LocalDB. Visual Studio에서 데이터베이스를 볼 수 있습니다.You can view the database in Visual Studio. 보기 메뉴에서 SQL Server 개체 탐색기를 선택합니다.From the View menu, select SQL Server Object Explorer.

서버에 연결 대화 상자의 서버 이름 입력란에 "(localdb) \v11.0"을 입력 합니다.In the Connect to Server dialog, in the Server Name edit box, type "(localdb)\v11.0". 인증 옵션을 "Windows 인증"으로 그대로 둡니다.Leave the Authentication option as "Windows Authentication". 연결을 클릭합니다.Click Connect.

Visual Studio는 LocalDB에 연결 하 고 SQL Server 개체 탐색기 창에 기존 데이터베이스를 표시 합니다.Visual Studio connects to LocalDB and shows your existing databases in the SQL Server Object Explorer window. 노드를 확장 하 여 EF에서 만든 테이블을 볼 수 있습니다.You can expand the nodes to see the tables that EF created.

데이터를 보려면 테이블을 마우스 오른쪽 단추로 클릭 하 고 데이터 보기를 선택 합니다.To view the data, right-click a table and select View Data.

다음 스크린샷에서는 Books 테이블의 결과를 보여 줍니다.The following screenshot shows the results for the Books table. EF는 데이터베이스를 초기값 데이터로 채우고 테이블에는 Authors 테이블에 대 한 외래 키가 포함 되어 있습니다.Notice that EF populated the database with the seed data, and the table contains the foreign key to the Authors table.