다음을 통해 공유


열거형 지원 - Code First

참고 항목

EF5 이상만 - 이 페이지에서 다루는 기능, API 등은 Entity Framework 5에 도입되었습니다. 이전 버전을 사용하는 경우 이 정보의 일부 또는 전체가 적용되지 않습니다.

이 비디오 및 단계별 연습에서는 Entity Framework Code First에서 열거형 형식을 사용하는 방법을 보여줍니다. LINQ 쿼리에서 열거형을 사용하는 방법도 보여줍니다.

이 연습에서는 Code First를 사용하여 새 데이터베이스를 만들지만 Code First를 사용하여 기존 데이터베이스에 매핑할 수도 있습니다.

열거형 지원은 Entity Framework 5에서 도입되었습니다. 열거형, 공간 데이터 형식 및 테이블 반환 함수와 같은 새로운 기능을 사용하려면 .NET Framework 4.5를 대상으로 해야 합니다. Visual Studio 2012는 기본적으로 .NET 4.5를 대상으로 합니다.

Entity Framework에서 열거형에는 Byte, Int16, Int32, Int64 또는 SByte의 기본 형식이 있을 수 있습니다.

비디오 보기

이 비디오에서는 Entity Framework Code First에서 열거형 형식을 사용하는 방법을 보여줍니다. LINQ 쿼리에서 열거형을 사용하는 방법도 보여줍니다.

발표자: 줄리아 코르니치

비디오: WMV | MP4 | WMV(ZIP)

필수 구성 요소

이 연습을 완료하려면 Visual Studio 2012, Ultimate, Premium, Professional 또는 Web Express 버전이 설치되어 있어야 합니다.

 

Project 설정

  1. Visual Studio 2012를 엽니다.
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.
  3. 왼쪽 창에서 Visual C#을 클릭한 다음 콘솔 템플릿을 선택합니다.
  4. 프로젝트 이름으로 EnumCodeFirst를 입력하고 확인을 클릭합니다.

Code First를 사용하여 새 모델 정의

Code First 개발을 사용하는 경우 일반적으로 개념적(도메인) 모델을 정의하는 .NET Framework 클래스를 작성하는 것으로 시작합니다. 아래 코드는 Department 클래스를 정의합니다.

또한 이 코드는 DepartmentNames 열거형을 정의합니다. 기본적으로 열거형은 int 형식입니다. Department 클래스의 Name 속성은 DepartmentNames 형식입니다.

Program.cs 파일을 열고 다음 클래스 정의를 붙여넣습니다.

public enum DepartmentNames
{
    English,
    Math,
    Economics
}     

public partial class Department
{
    public int DepartmentID { get; set; }
    public DepartmentNames Name { get; set; }
    public decimal Budget { get; set; }
}

 

DbContext 파생 형식 정의

엔터티를 정의하는 것 외에도 DbContext에서 파생되고 DbSet<TEntity> 속성을 노출하는 클래스를 정의해야 합니다. DbSet<TEntity> 속성은 모델에 포함하려는 형식을 컨텍스트에 알립니다.

DbContext 파생 형식의 인스턴스는 런타임 중에 엔터티 개체를 관리합니다. 여기에는 데이터베이스의 데이터로 개체 채우기, 변경 내용 추적 및 데이터베이스에 데이터 유지가 포함됩니다.

DbContext 및 DbSet 형식은 EntityFramework 어셈블리에 정의되어 있습니다. NuGet 패키지를 사용하여 이 DLL에 대한 참조를 추가합니다.

  1. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭합니다.
  2. NuGet 패키지 관리...를 선택합니다.
  3. NuGet 패키지 관리 대화 상자에서 온라인 탭을 선택하고 EntityFramework 패키지를 선택합니다.
  4. 설치를 클릭합니다.

EntityFramework 어셈블리 외에도 System.ComponentModel.DataAnnotations 및 System.Data.Entity 어셈블리에 대한 참조도 추가됩니다.

Program.cs 파일의 맨 위에 다음 using 문을 추가합니다.

using System.Data.Entity;

Program.cs에서 컨텍스트 정의를 추가합니다. 

public partial class EnumTestContext : DbContext
{
    public DbSet<Department> Departments { get; set; }
}

 

데이터 유지 및 검색

Main 메서드가 정의된 Program.cs 파일을 엽니다. Main 함수에 다음 코드를 추가합니다. 코드는 컨텍스트에 새 Department 개체를 추가합니다. 그런 다음 데이터를 저장합니다. 또한 이 코드는 이름이 DepartmentNames.English인 Department를 반환하는 LINQ 쿼리를 실행합니다.

using (var context = new EnumTestContext())
{
    context.Departments.Add(new Department { Name = DepartmentNames.English });

    context.SaveChanges();

    var department = (from d in context.Departments
                        where d.Name == DepartmentNames.English
                        select d).FirstOrDefault();

    Console.WriteLine(
        "DepartmentID: {0} Name: {1}",
        department.DepartmentID,  
        department.Name);
}

애플리케이션을 컴파일하고 실행합니다. 프로그램에서는 다음이 출력됩니다.

DepartmentID: 1 Name: English

 

생성된 데이터베이스 보기

애플리케이션을 처음 실행하면 Entity Framework에서 데이터베이스를 만듭니다. Visual Studio 2012가 설치되어 있으므로 데이터베이스가 LocalDB 인스턴스에 만들어집니다. 기본적으로 Entity Framework는 파생 컨텍스트의 정규화된 이름 뒤에 데이터베이스 이름을 지정합니다(이 예에서는 EnumCodeFirst.EnumTestContext). 이후 기존 데이터베이스가 사용됩니다.  

데이터베이스를 만든 후 모델을 변경하는 경우 Code First 마이그레이션을 사용하여 데이터베이스 스키마를 업데이트해야 합니다. 마이그레이션 사용 예제는 새 데이터베이스에 대한 Code First를 참조하세요.

데이터베이스 및 데이터를 보려면 다음을 수행합니다.

  1. Visual Studio 2012 기본 메뉴에서 보기 ->SQL Server 개체 탐색기를 선택합니다.
  2. LocalDB가 서버 목록에 없는 경우 SQL Server를 마우스 오른쪽 단추를 클릭하고 SQL Server 추가 기본 Windows 인증을 사용하여 LocalDB 인스턴스에 연결을 선택합니다.
  3. LocalDB 노드 확장
  4. 데이터베이스 폴더를 펼쳐 새 데이터베이스를 확인하고 Department 테이블로 이동합니다. Code First는 열거형 형식에 매핑되는 테이블을 만들지 않습니다.
  5. 데이터를 보려면 테이블을 마우스 오른쪽 단추로 클릭하고 데이터 보기를 선택합니다.

요약

이 연습에서는 Entity Framework Code First에서 열거형 형식을 사용하는 방법을 살펴보았습니다.