모델 및 컨트롤러 추가
이 섹션에서는 데이터베이스 엔터티를 정의하는 모델 클래스를 추가합니다. 그런 다음 해당 엔터티에서 CRUD 작업을 수행하는 Web API 컨트롤러를 추가합니다.
모델 클래스 추가
이 자습서에서는 EF(Entity Framework)에 대한 "Code First" 접근 방식을 사용하여 데이터베이스를 만듭니다. Code First를 사용하면 데이터베이스 테이블에 해당하는 C# 클래스를 작성하고 EF는 데이터베이스를 만듭니다. (자세한 내용은 Entity Framework 개발 방법을 참조하세요.)
먼저 도메인 개체를 POCO(일반 이전 CLR 개체)로 정의합니다. 다음 POCO를 만듭니다.
- 작성자
- Book
솔루션 탐색기 Models 폴더를 마우스 오른쪽 단추로 클릭합니다. 추가를 선택한 다음, 클래스를 선택합니다. 클래스 Author
이름을 지정합니다.
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 컨트롤러가 포함되어 있지만 이 자습서에는 필요하지 않습니다.
다음으로 프로젝트를 빌드합니다. Web API 스캐폴딩은 리플렉션을 사용하여 모델 클래스를 찾으므로 컴파일된 어셈블리가 필요합니다.
솔루션 탐색기에서 Controllers 폴더를 마우스 오른쪽 단추로 클릭합니다. 추가를 선택한 다음 컨트롤러를 선택합니다.
스캐폴드 추가 대화 상자에서 "Entity Framework를 사용하여 작업이 있는 Web API 2 컨트롤러"를 선택합니다. 추가를 클릭합니다.
컨트롤러 추가 대화 상자에서 다음을 수행합니다.
- 모델 클래스 드롭다운에서 클래스를
Author
선택합니다. 드롭다운에 나열된 항목이 표시되지 않으면 프로젝트를 빌드했는지 확인합니다. - "비동기 컨트롤러 작업 사용"을 선택합니다.
- 컨트롤러 이름을 "AuthorsController"로 둡니다.
- 데이터 컨텍스트 클래스 옆에 있는 더하기(+) 단추를 클릭합니다.
새 데이터 컨텍스트 대화 상자에서 기본 이름을 그대로 두고 추가를 클릭합니다.
추가를 클릭하여 컨트롤러 추가 대화 상자를 완료합니다. 이 대화 상자는 프로젝트에 다음 두 개의 클래스를 추가합니다.
AuthorsController
는 Web API 컨트롤러를 정의합니다. 컨트롤러는 클라이언트가 작성자 목록에서 CRUD 작업을 수행하는 데 사용하는 REST API를 구현합니다.BookServiceContext
는 데이터베이스의 데이터로 개체 채우기, 변경 내용 추적 및 데이터베이스에 데이터 유지를 포함하는 런타임 동안 엔터티 개체를 관리합니다.DbContext
에서 상속받습니다.
이 시점에서 프로젝트를 다시 빌드합니다. 이제 동일한 단계를 진행하여 엔터티에 대한 API 컨트롤러를 Book
추가합니다. 이번에는 모델 클래스를 선택하고 Book
데이터 컨텍스트 클래스에 대한 기존 BookServiceContext
클래스를 선택합니다. (새 데이터 컨텍스트를 만들지 마세요.) 추가 를 클릭하여 컨트롤러를 추가합니다.