모델 및 컨트롤러 추가Add Models and Controllers

Mike Wassonby Mike Wasson

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

이 섹션에서는 데이터베이스 엔터티를 정의 하는 모델 클래스를 추가 합니다.In this section, you will add model classes that define the database entities. 그런 다음 해당 엔터티에 대 한 CRUD 작업을 수행 하는 Web API 컨트롤러를 추가 합니다.Then you will add Web API controllers that perform CRUD operations on those entities.

모델 클래스 추가Add Model Classes

이 자습서에서는 EF (Entity Framework)에 대 한 "Code First" 접근 방법을 사용 하 여 데이터베이스를 만듭니다.In this tutorial, we'll create the database by using the "Code First" approach to Entity Framework (EF). Code First를 사용 하 여 C# 데이터베이스 테이블에 해당 하는 클래스를 작성 하 고 EF는 데이터베이스를 만듭니다.With Code First, you write C# classes that correspond to database tables, and EF creates the database. 자세한 내용은 Entity Framework 개발 방법을 참조 하세요.(For more information, see Entity Framework Development Approaches.)

도메인 개체를 POCOs (일반-이전 CLR 개체)로 정의 하 여 시작 합니다.We start by defining our domain objects as POCOs (plain-old CLR objects). 다음 POCOs를 만들게 됩니다.We will create the following POCOs:

  • 작성자Author
  • BookBook

솔루션 탐색기에서 모델 폴더를 마우스 오른쪽 단추로 클릭 합니다.In Solution Explorer, right click the Models folder. 추가를 선택한 다음 클래스를 선택 합니다.Select Add, then select Class. 클래스 Author 이름을 지정합니다.Name the class Author.

Author.cs의 모든 상용구 코드를 다음 코드로 바꿉니다.Replace all of the boilerplate code in Author.cs with the following code.

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Author
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
    }
}

다음 코드를 사용 하 여 Book라는 다른 클래스를 추가 합니다.Add another class named Book, with the following code.

using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Book
    {
        public int Id { get; set; }
        [Required]
        public string Title { get; set; }
        public int Year { get; set; }
        public decimal Price { get; set; }
        public string Genre { get; set; }

        // Foreign Key
        public int AuthorId { get; set; }
        // Navigation property
        public Author Author { get; set; }
    }
}

Entity Framework은 이러한 모델을 사용 하 여 데이터베이스 테이블을 만듭니다.Entity Framework will use these models to create database tables. 각 모델에 대해 Id 속성은 데이터베이스 테이블의 기본 키 열이 됩니다.For each model, the Id property will become the primary key column of the database table.

Book 클래스에서 AuthorIdAuthor 테이블에 외래 키를 정의 합니다.In the Book class, the AuthorId defines a foreign key into the Author table. (간단히 하기 위해 각 책에 단일 저자가 있다고 가정 합니다.) Book 클래스에는 관련 된 Author에 대 한 탐색 속성도 포함 되어 있습니다.(For simplicity, I'm assuming that each book has a single author.) The book class also contains a navigation property to the related Author. 탐색 속성을 사용 하 여 코드에서 관련 Author에 액세스할 수 있습니다.You can use the navigation property to access the related Author in code. 4 부의 탐색 속성에 대해 자세히 언급 하 고 엔터티 관계를 처리합니다.I say more about navigation properties in part 4, Handling Entity Relations.

Web API 컨트롤러 추가Add Web API Controllers

이 섹션에서는 CRUD 작업 (만들기, 읽기, 업데이트 및 삭제)을 지 원하는 Web API 컨트롤러를 추가 합니다.In this section, we'll add Web API controllers that support CRUD operations (create, read, update, and delete). 컨트롤러는 Entity Framework을 사용 하 여 데이터베이스 계층과 통신 합니다.The controllers will use Entity Framework to communicate with the database layer.

먼저 file controller/Valuecontroller .cs를 삭제할 수 있습니다.First, you can delete the file Controllers/ValuesController.cs. 이 파일에는 웹 API 컨트롤러의 예가 포함 되어 있지만이 자습서에서는 필요 하지 않습니다.This file contains an example Web API controller, but you don't need it for this tutorial.

다음으로 프로젝트를 빌드합니다.Next, build the project. 웹 API 스 캐 폴딩은 리플렉션을 사용 하 여 모델 클래스를 찾습니다. 따라서 컴파일된 어셈블리가 필요 합니다.The Web API scaffolding uses reflection to find the model classes, so it needs the compiled assembly.

솔루션 탐색기에서 Controllers 폴더를 마우스 오른쪽 단추로 클릭 합니다.In Solution Explorer, right-click the Controllers folder. 추가를 선택한 다음 컨트롤러를 선택 합니다.Select Add, then select Controller.

스 캐 폴드 추가 대화 상자에서 "작업을 사용 하는 웹 API 2 컨트롤러, Entity Framework 사용"을 선택 합니다.In the Add Scaffold dialog, select "Web API 2 Controller with actions, using Entity Framework". 추가를 클릭합니다.Click Add.

컨트롤러 추가 대화 상자에서 다음을 수행 합니다.In the Add Controller dialog, do the following:

  1. 모델 클래스 드롭다운에서 Author 클래스를 선택 합니다.In the Model class dropdown, select the Author class. 드롭다운 목록에 표시 되지 않는 경우 프로젝트를 빌드 했는지 확인 합니다.(If you don't see it listed in the dropdown, make sure that you built the project.)
  2. "비동기 컨트롤러 작업 사용"을 선택 합니다.Check "Use async controller actions".
  3. 컨트롤러 이름을 "AuthorsController"으로 그대로 둡니다.Leave the controller name as "AuthorsController".
  4. 데이터 컨텍스트 클래스옆에 있는 더하기 (+) 단추를 클릭 합니다.Click plus (+) button next to Data Context Class.

새 데이터 컨텍스트 대화 상자에서 기본 이름을 그대로 두고 추가를 클릭 합니다.In the New Data Context dialog, leave the default name and click Add.

추가 를 클릭 하 여 컨트롤러 추가 대화 상자를 완료 합니다.Click Add to complete the Add Controller dialog. 대화 상자에서 프로젝트에 두 개의 클래스를 추가 합니다.The dialog adds two classes to your project:

  • AuthorsController는 Web API 컨트롤러를 정의 합니다.AuthorsController defines a Web API controller. 컨트롤러는 클라이언트가 저자 목록에서 CRUD 작업을 수행 하는 데 사용 하는 REST API를 구현 합니다.The controller implements the REST API that clients use to perform CRUD operations on the list of authors.
  • BookServiceContext는 런타임에 데이터베이스의 데이터로 개체 채우기, 변경 내용 추적 및 데이터베이스에 데이터 유지를 포함 하는 엔터티 개체를 관리 합니다.BookServiceContext manages entity objects during run time, which includes populating objects with data from a database, change tracking, and persisting data to the database. DbContext에서 상속받습니다.It inherits from DbContext.

이제 프로젝트를 다시 빌드합니다.At this point, build the project again. 이제 동일한 단계를 수행 하 여 Book 엔터티에 대 한 API 컨트롤러를 추가 합니다.Now go through the same steps to add an API controller for Book entities. 이번에는 모델 클래스에 대해 Book를 선택 하 고 데이터 컨텍스트 클래스에 대해 기존 BookServiceContext 클래스를 선택 합니다.This time, select Book for the model class, and select the existing BookServiceContext class for the data context class. 새 데이터 컨텍스트를 만들지 마세요. 추가 를 클릭 하 여 컨트롤러를 추가 합니다.(Don't create a new data context.) Click Add to add the controller.