열거형 지원-Code FirstEnum Support - Code First

참고

EF5 이상-이 페이지에서 설명 하는 기능, api 등은 Entity Framework 5에서 도입 되었습니다.EF5 Onwards Only - The features, APIs, etc. discussed in this page were introduced in Entity Framework 5. 이전 버전을 사용하는 경우 이 정보의 일부 또는 전체가 적용되지 않습니다.If you are using an earlier version, some or all of the information does not apply.

이 비디오 및 단계별 연습에서는 Entity Framework Code First에서 열거형 형식을 사용 하는 방법을 보여 줍니다.This video and step-by-step walkthrough shows how to use enum types with Entity Framework Code First. 또한 LINQ 쿼리에서 열거형을 사용 하는 방법도 보여 줍니다.It also demonstrates how to use enums in a LINQ query.

이 연습에서는 Code First 사용 하 여 새 데이터베이스를 만들지만 Code First를 사용 하 여 기존 데이터베이스에 매핑할수도 있습니다.This walkthrough will use Code First to create a new database, but you can also use Code First to map to an existing database.

열거형 지원은 Entity Framework 5에서 도입 되었습니다.Enum support was introduced in Entity Framework 5. 열거형, 공간 데이터 형식 및 테이블 반환 함수와 같은 새로운 기능을 사용 하려면 .NET Framework 4.5를 대상으로 해야 합니다.To use the new features like enums, spatial data types, and table-valued functions, you must target .NET Framework 4.5. Visual Studio 2012는 기본적으로 .NET 4.5를 대상으로 합니다.Visual Studio 2012 targets .NET 4.5 by default.

Entity Framework에서 열거형은 Byte, Int16, Int32, Int64 또는 SByte의 기본 형식을 가질 수 있습니다.In Entity Framework, an enumeration can have the following underlying types: Byte, Int16, Int32, Int64 , or SByte.

비디오 보기Watch the video

이 비디오는 Entity Framework Code First에서 열거형 형식을 사용 하는 방법을 보여 줍니다.This video shows how to use enum types with Entity Framework Code First. 또한 LINQ 쿼리에서 열거형을 사용 하는 방법도 보여 줍니다.It also demonstrates how to use enums in a LINQ query.

제공한 사람: 줄리아 KornichPresented By: Julia Kornich

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

필수 구성 요소Pre-Requisites

이 연습을 완료 하려면 Visual Studio 2012, Ultimate, Premium, Professional 또는 Web Express edition을 설치 해야 합니다.You will need to have Visual Studio 2012, Ultimate, Premium, Professional, or Web Express edition installed to complete this walkthrough.

 

프로젝트 설정Set up the Project

  1. Visual Studio 2012 열기Open Visual Studio 2012
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트 를 클릭 합니다.On the File menu, point to New, and then click Project
  3. 왼쪽 창에서 **Visual C # **를 클릭 한 다음 콘솔 템플릿을 선택 합니다.In the left pane, click Visual C#, and then select the Console template
  4. Enumcodefirst 를 프로젝트 이름으로 입력 하 고 확인을 클릭 합니다.Enter EnumCodeFirst as the name of the project and click OK

Code First를 사용 하 여 새 모델 정의Define a New Model using Code First

Code First 개발을 사용 하는 경우 일반적으로 개념 (도메인) 모델을 정의 하는 .NET Framework 클래스를 작성 하는 것으로 시작 합니다.When using Code First development you usually begin by writing .NET Framework classes that define your conceptual (domain) model. 아래 코드는 부서 클래스를 정의 합니다.The code below defines the Department class.

또한이 코드는 DepartmentNames 열거형을 정의 합니다.The code also defines the DepartmentNames enumeration. 기본적으로 열거형은 int 형식입니다.By default, the enumeration is of int type. 학과 클래스의 Name 속성은 DepartmentNames 유형입니다.The Name property on the Department class is of the DepartmentNames type.

Program.cs 파일을 열고 다음 클래스 정의를 붙여 넣습니다.Open the Program.cs file and paste the following class definitions.

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 파생 형식 정의Define the DbContext Derived Type

엔터티를 정의하는 것 외에도 DbContext에서 파생되고 DbSet<TEntity> 속성을 노출하는 클래스를 정의해야 합니다.In addition to defining entities, you need to define a class that derives from DbContext and exposes DbSet<TEntity> properties. DbSet<TEntity> 속성은 모델에 포함하려는 형식을 컨텍스트에 알립니다.The DbSet<TEntity> properties let the context know which types you want to include in the model.

DbContext 파생 형식의 인스턴스는 런타임 중에 엔터티 개체를 관리합니다. 여기에는 데이터베이스의 데이터로 개체 채우기, 변경 내용 추적 및 데이터베이스에 데이터 유지가 포함됩니다.An instance of the DbContext derived type manages the entity objects during run time, which includes populating objects with data from a database, change tracking, and persisting data to the database.

DbContext 및 DbSet 형식은 EntityFramework 어셈블리에서 정의 됩니다.The DbContext and DbSet types are defined in the EntityFramework assembly. EntityFramework NuGet 패키지를 사용 하 여이 DLL에 대 한 참조를 추가 합니다.We will add a reference to this DLL by using the EntityFramework NuGet package.

  1. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭 합니다.In Solution Explorer, right-click on the project name.
  2. NuGet 패키지 관리 ... 를 선택 합니다.Select Manage NuGet Packages…
  3. NuGet 패키지 관리 대화 상자에서 온라인 탭을 선택 하 고 entityframework 패키지를 선택 합니다.In the Manage NuGet Packages dialog, Select the Online tab and choose the EntityFramework package.
  4. 설치를 클릭합니다.Click Install

EntityFramework 어셈블리 외에도 System.componentmodel 및 system.xml 어셈블리에 대 한 참조도 추가 됩니다 (참고).Note, that in addition to the EntityFramework  assembly, references to System.ComponentModel.DataAnnotations and System.Data.Entity assemblies are added as well.

Program.cs 파일의 맨 위에 다음 using 문을 추가 합니다.At the top of the Program.cs file, add the following using statement:

using System.Data.Entity;

Program.cs에서 컨텍스트 정의를 추가 합니다.In the Program.cs add the context definition. 

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

 

데이터 유지 및 검색Persist and Retrieve Data

Main 메서드가 정의 된 Program.cs 파일을 엽니다.Open the Program.cs file where the Main method is defined. Main 함수에 다음 코드를 추가 합니다.Add the following code into the Main function. 이 코드는 컨텍스트에 새 부서 개체를 추가 합니다.The code adds a new Department object to the context. 그런 다음 데이터를 저장 합니다.It then saves the data. 또한이 코드는 이름이 DepartmentNames 인 부서를 반환 하는 LINQ 쿼리를 실행 합니다.The code also executes a LINQ query that returns a Department where the name is DepartmentNames.English.

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

애플리케이션을 컴파일하고 실행합니다.Compile and run the application. 프로그램에서는 다음이 출력됩니다.The program produces the following output:

DepartmentID: 1 Name: English

 

생성 된 데이터베이스 보기View the Generated Database

응용 프로그램을 처음 실행 하면 Entity Framework 데이터베이스를 만듭니다.When you run the application the first time, the Entity Framework creates a database for you. Visual Studio 2012가 설치 되어 있으므로 데이터베이스가 LocalDB 인스턴스에 생성 됩니다.Because we have Visual Studio 2012 installed, the database will be created on the LocalDB instance. 기본적으로 Entity Framework은 파생 컨텍스트의 정규화 된 이름 (이 예에서는 Enumcodefirst. EnumTestContext) 뒤에 데이터베이스 이름을 부여 합니다.By default, the Entity Framework names the database after the fully qualified name of the derived context (for this example that is EnumCodeFirst.EnumTestContext). 기존 데이터베이스가 사용 되는 이후 시간입니다.The subsequent times the existing database will be used.  

데이터베이스를 만든 후 모델을 변경 하는 경우 Code First 마이그레이션를 사용 하 여 데이터베이스 스키마를 업데이트 해야 합니다.Note, that if you make any changes to your model after the database has been created, you should use Code First Migrations to update the database schema. 마이그레이션을 사용 하는 예제는 새 데이터베이스에 대 한 Code First를 참조 하세요.See Code First to a New Database for an example of using Migrations.

데이터베이스 및 데이터를 보려면 다음을 수행 합니다.To view the database and data, do the following:

  1. Visual Studio 2012 주 메뉴에서 SQL Server 개체 탐색기 보기 를 선택 - > SQL Server Object Explorer합니다.In the Visual Studio 2012 main menu, select View -> SQL Server Object Explorer.
  2. LocalDB가 서버 목록에 없으면 SQL Server 에서 마우스 오른쪽 단추를 클릭 하 고 추가를 선택 SQL Server 기본 Windows 인증 을 사용 하 여 localdb 인스턴스에 연결 합니다.If LocalDB is not in the list of servers, click the right mouse button on SQL Server and select Add SQL Server Use the default Windows Authentication to connect to the LocalDB instance
  3. LocalDB 노드 확장Expand the LocalDB node
  4. 데이터베이스 폴더를 펼침 새 데이터베이스를 확인 하 고 부서 테이블을 탐색 합니다. Code First이는 열거형 형식에 매핑되는 테이블을 만들지 않습니다.Unfold the Databases folder to see the new database and browse to the Department table Note, that Code First does not create a table that maps to the enumeration type
  5. 데이터를 보려면 테이블을 마우스 오른쪽 단추로 클릭 하 고 데이터 보기 를 선택 합니다.To view data, right-click on the table and select View Data

요약Summary

이 연습에서는 Entity Framework Code First에서 열거형 형식을 사용 하는 방법을 살펴보았습니다.In this walkthrough we looked at how to use enum types with Entity Framework Code First.