다음을 통해 공유


모델 및 컨트롤러 추가

완료된 프로젝트 다운로드

이 섹션에서는 데이터베이스 엔터티를 정의하는 모델 클래스를 추가합니다. 그런 다음 해당 엔터티에서 CRUD 작업을 수행하는 Web API 컨트롤러를 추가합니다.

모델 클래스 추가

이 자습서에서는 EF(Entity Framework)에 대한 "Code First" 접근 방식을 사용하여 데이터베이스를 만듭니다. Code First를 사용하면 데이터베이스 테이블에 해당하는 C# 클래스를 작성하고 EF는 데이터베이스를 만듭니다. (자세한 내용은 Entity Framework 개발 방법을 참조하세요.)

먼저 도메인 개체를 POCO(일반 이전 CLR 개체)로 정의합니다. 다음 POCO를 만듭니다.

  • 작성자
  • Book

솔루션 탐색기 Models 폴더를 마우스 오른쪽 단추로 클릭합니다. 추가를 선택한 다음, 클래스를 선택합니다. 클래스 Author 이름을 지정합니다.

파란색으로 강조 표시된 Models 폴더와 노란색으로 강조 표시된 추가 및 클래스 메뉴 항목을 보여 주는 솔루션 탐색기 폴더의 스크린샷

Author.cs의 모든 상용구 코드를 다음 코드로 바꿉니다.

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다른 클래스를 추가합니다.

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는 이러한 모델을 사용하여 데이터베이스 테이블을 만듭니다. 각 모델에 대해 속성은 Id 데이터베이스 테이블의 기본 키 열이 됩니다.

Book 클래스에서 는 AuthorId 테이블에 외래 키를 Author 정의합니다. (간단히 하기 위해 각 책에는 하나의 저자가 있다고 가정합니다.) book 클래스에는 관련 Author에 대한 탐색 속성도 포함됩니다. 탐색 속성을 사용하여 코드의 관련 Author 항목에 액세스할 수 있습니다. 엔터티 관계 처리 4부의 탐색 속성에 대해 자세히 설명합니다.

Web API 컨트롤러 추가

이 섹션에서는 CRUD 작업(만들기, 읽기, 업데이트 및 삭제)을 지원하는 Web API 컨트롤러를 추가합니다. 컨트롤러는 Entity Framework를 사용하여 데이터베이스 계층과 통신합니다.

먼저 Controllers/ValuesController.cs 파일을 삭제할 수 있습니다. 이 파일에는 예제 Web API 컨트롤러가 포함되어 있지만 이 자습서에는 필요하지 않습니다.

값 컨트롤러 점 c의 파일이 빨간색으로 강조 표시되어 삭제해야 함을 나타내는 솔루션 탐색기 창의 스크린샷

다음으로 프로젝트를 빌드합니다. Web API 스캐폴딩은 리플렉션을 사용하여 모델 클래스를 찾으므로 컴파일된 어셈블리가 필요합니다.

솔루션 탐색기에서 Controllers 폴더를 마우스 오른쪽 단추로 클릭합니다. 추가를 선택한 다음 컨트롤러를 선택합니다.

Controllers 폴더와 추가 및 컨트롤러 메뉴 항목이 파란색과 노란색으로 강조 표시된 솔루션 탐색기 창의 스크린샷

스캐폴드 추가 대화 상자에서 "Entity Framework를 사용하여 작업이 있는 Web API 2 컨트롤러"를 선택합니다. 추가를 클릭합니다.

Entity Framework를 사용한 작업이 파란색으로 강조 표시된 Web A P 2 컨트롤러를 보여 주는 스캐폴드 추가 대화 상자의 스크린샷.

컨트롤러 추가 대화 상자에서 다음을 수행합니다.

  1. 모델 클래스 드롭다운에서 클래스를 Author 선택합니다. 드롭다운에 나열된 항목이 표시되지 않으면 프로젝트를 빌드했는지 확인합니다.
  2. "비동기 컨트롤러 작업 사용"을 선택합니다.
  3. 컨트롤러 이름을 "AuthorsController"로 둡니다.
  4. 데이터 컨텍스트 클래스 옆에 있는 더하기(+) 단추를 클릭합니다.

빨간색으로 동그라미를 그리는 더하기 단추와 모델 클래스 드롭다운에서 선택한 Author 클래스를 보여 주는 컨트롤러 추가 대화 상자의 스크린샷.

새 데이터 컨텍스트 대화 상자에서 기본 이름을 그대로 두고 추가를 클릭합니다.

새 데이터 컨텍스트 형식 필드의 기본 이름을 보여 주는 새 데이터 컨텍스트 대화 상자의 스크린샷

추가를 클릭하여 컨트롤러 추가 대화 상자를 완료합니다. 이 대화 상자는 프로젝트에 다음 두 개의 클래스를 추가합니다.

  • AuthorsController 는 Web API 컨트롤러를 정의합니다. 컨트롤러는 클라이언트가 작성자 목록에서 CRUD 작업을 수행하는 데 사용하는 REST API를 구현합니다.
  • BookServiceContext 는 데이터베이스의 데이터로 개체 채우기, 변경 내용 추적 및 데이터베이스에 데이터 유지를 포함하는 런타임 동안 엔터티 개체를 관리합니다. DbContext에서 상속받습니다.

Authors Controller dot c 파일과 Book Service Context dot c 파일이 빨간색으로 동그라미로 표시된 솔루션 탐색기 창의 스크린샷

이 시점에서 프로젝트를 다시 빌드합니다. 이제 동일한 단계를 진행하여 엔터티에 대한 API 컨트롤러를 Book 추가합니다. 이번에는 모델 클래스를 선택하고 Book 데이터 컨텍스트 클래스에 대한 기존 BookServiceContext 클래스를 선택합니다. (새 데이터 컨텍스트를 만들지 마세요.) 추가 를 클릭하여 컨트롤러를 추가합니다.

모델 클래스 드롭다운 메뉴에서 모델 예약 클래스가 선택된 컨트롤러 추가 창의 스크린샷