열거형 지원-EF 디자이너Enum Support - EF Designer

참고

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 Designer에서 열거형 형식을 사용 하는 방법을 보여 줍니다.This video and step-by-step walkthrough shows how to use enum types with the Entity Framework Designer. 또한 LINQ 쿼리에서 열거형을 사용 하는 방법도 보여 줍니다.It also demonstrates how to use enums in a LINQ query.

이 연습에서는 Model First 사용 하 여 새 데이터베이스를 만들지만 EF Designer를 Database First 워크플로와 함께 사용 하 여 기존 데이터베이스에 매핑할 수도 있습니다.This walkthrough will use Model First to create a new database, but the EF Designer can also be used with the Database First workflow 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 Designer에서 열거형 형식을 사용 하는 방법을 보여 줍니다.This video shows how to use enum types with the Entity Framework Designer. 또한 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. 프로젝트 이름으로 Enumefdesigner 를 입력 하 고 확인 을 클릭 합니다.Enter EnumEFDesigner as the name of the project and click OK

EF Designer를 사용 하 여 새 모델 만들기Create a New Model using the EF Designer

  1. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭 하 고 추가를 가리킨 다음 새 항목 을 클릭 합니다.Right-click the project name in Solution Explorer, point to Add, and then click New Item
  2. 왼쪽 메뉴에서 데이터 를 선택 하 고 템플릿 창에서 ADO.NET 엔터티 데이터 모델 를 선택 합니다.Select Data from the left menu and then select ADO.NET Entity Data Model in the Templates pane
  3. 파일 이름으로 Enumtestmodel .edmx 를 입력 한 다음 추가 를 클릭 합니다.Enter EnumTestModel.edmx for the file name, and then click Add
  4. 엔터티 데이터 모델 마법사 페이지의 Model 콘텐츠 선택 대화 상자에서 빈 모델 을 선택 합니다.On the Entity Data Model Wizard page, select Empty Model in the Choose Model Contents dialog box
  5. 마침을 클릭합니다.Click Finish

모델 편집을 위한 디자인 화면을 제공 하는 Entity Designer 표시 됩니다.The Entity Designer, which provides a design surface for editing your model, is displayed.

마법사에서는 다음 작업을 수행합니다.The wizard performs the following actions:

  • 개념적 모델, 저장소 모델 및 두 모델 간의 매핑을 정의 하는 EnumTestModel .edmx 파일을 생성 합니다.Generates the EnumTestModel.edmx file that defines the conceptual model, the storage model, and the mapping between them. 생성 된 메타 데이터 파일이 어셈블리에 포함 되도록 .edmx 파일의 메타 데이터 아티팩트 처리 속성을 출력 어셈블리에 포함 하도록 설정 합니다.Sets the Metadata Artifact Processing property of the .edmx file to Embed in Output Assembly so the generated metadata files get embedded into the assembly.
  • EntityFramework, System.componentmodel 및 System.object 어셈블리에 대 한 참조를 추가 합니다.Adds a reference to the following assemblies: EntityFramework, System.ComponentModel.DataAnnotations, and System.Data.Entity.
  • EnumTestModel.tt 및 EnumTestModel.Context.tt 파일을 만들고 .edmx 파일 아래에 추가 합니다.Creates EnumTestModel.tt and EnumTestModel.Context.tt files and adds them under the .edmx file. 이러한 T4 템플릿 파일은 .edmx 모델의 엔터티에 매핑되는 DbContext 파생 형식 및 POCO 형식을 정의 하는 코드를 생성 합니다.These T4 template files generate the code that defines the DbContext derived type and POCO types that map to the entities in the .edmx model.

새 엔터티 형식 추가Add a New Entity Type

  1. 디자인 화면의 빈 영역을 마우스 오른쪽 단추로 클릭 하 고 ** > 엔터티 추가**를 선택 합니다. 새 엔터티 대화 상자가 나타납니다.Right-click an empty area of the design surface, select Add -> Entity, the New Entity dialog box appears
  2. 유형 이름에 대해 학과 를 지정 하 고 키 속성 이름에 DepartmentID 를 지정 하 고 형식을 Int32 로 그대로 둡니다.Specify Department for the type name and specify DepartmentID for the key property name, leave the type as Int32
  3. 확인을 클릭합니다.Click OK
  4. 엔터티를 마우스 오른쪽 단추로 클릭 하 고 추가 새- > 스칼라 속성 을 선택 합니다.Right-click the entity and select Add New -> Scalar Property
  5. 새 속성의 이름을 Name 으로 바꿉니다.Rename the new property to Name
  6. 새 속성의 형식을 int32 (기본적으로 새 속성은 문자열 형식)로 변경 하 여 형식을 변경 하 고 속성 창를 연 다음 형식 속성을 int32 로 변경 합니다.Change the type of the new property to Int32 (by default, the new property is of String type) To change the type, open the Properties window and change the Type property to Int32
  7. 다른 스칼라 속성을 추가 하 고 예산으로 이름을 변경 하 고, 형식을 10 진수로 변경 합니다.Add another scalar property and rename it to Budget, change the type to Decimal

열거형 형식 추가Add an Enum Type

  1. Entity Framework Designer에서 Name 속성을 마우스 오른쪽 단추로 클릭 하 고 열거형으로 변환 을 선택 합니다.In the Entity Framework Designer, right-click the Name property, select Convert to enum

    열거형으로 변환

  2. 열거 추가 대화 상자에서 Enum 형식 이름에 DepartmentNames 를 입력 하 고, 기본 형식을 Int32로 변경한 후 형식에 영어, 수학 및 경제를 추가 합니다.In the Add Enum dialog box type DepartmentNames for the Enum Type Name, change the Underlying Type to Int32, and then add the following members to the type: English, Math, and Economics

    열거형 형식 추가

  3. 확인을 누릅니다.Press OK

  4. 모델을 저장 하 고 프로젝트를 빌드합니다.Save the model and build the project

    참고

    빌드하면 매핑되지 않은 엔터티와 연결에 대 한 경고가 오류 목록 표시 될 수 있습니다.When you build, warnings about unmapped entities and associations may appear in the Error List. 모델에서 데이터베이스를 생성 하는 것을 선택한 후 오류가 사라집니다. 이러한 경고는 무시 해도 됩니다.You can ignore these warnings because after we choose to generate the database from the model, the errors will go away.

속성 창를 살펴보면 이름 속성의 형식이 DepartmentNames 로 변경 되 고 새로 추가 된 열거형 형식이 형식 목록에 추가 된 것을 알 수 있습니다.If you look at the Properties window, you will notice that the type of the Name property was changed to DepartmentNames and the newly added enum type was added to the list of types.

모델 브라우저 창으로 전환 하면 형식이 열거형 형식 노드에도 추가 된 것을 확인할 수 있습니다.If you switch to the Model Browser window, you will see that the type was also added to the Enum Types node.

모델 브라우저

참고

마우스 오른쪽 단추를 클릭 하 고 열거형 형식 추가를 선택 하 여이 창에서 새 열거형 형식을 추가할 수도 있습니다.You can also add new enum types from this window by clicking the right mouse button and selecting Add Enum Type. 형식이 생성 되 면 형식 목록에 표시 되 고 속성에 연결할 수 있습니다.Once the type is created it will appear in the list of types and you would be able to associate with a property

모델에서 데이터베이스 생성Generate Database from Model

이제 모델을 기반으로 하는 데이터베이스를 생성할 수 있습니다.Now we can generate a database that is based on the model.

  1. Entity Designer 화면의 빈 공간을 마우스 오른쪽 단추로 클릭 하 고 모델에서 데이터베이스 생성 을 선택 합니다.Right-click an empty space on the Entity Designer surface and select Generate Database from Model
  2. 데이터베이스 생성 마법사의 데이터 연결 선택 대화 상자가 표시 되 면 새 연결 단추를 클릭 하 여 데이터베이스에 대 한 서버 이름 및 enumtest 에 대해 ** \ mssqllocaldb** 를 지정 하 고 확인 을 클릭 합니다.The Choose Your Data Connection Dialog Box of the Generate Database Wizard is displayed Click the New Connection button Specify (localdb)\mssqllocaldb for the server name and EnumTest for the database and click OK
  3. 새 데이터베이스를 만들지 여부를 묻는 대화 상자가 표시 되 면 를 클릭 합니다.A dialog asking if you want to create a new database will pop up, click Yes.
  4. 다음 을 클릭 하 고 데이터베이스 만들기 마법사에서 데이터베이스를 만들기 위한 ddl (데이터 정의 언어)을 생성 합니다. 생성 된 Ddl은 요약 및 설정 대화 상자에 표시 되며, 해당 ddl에는 열거형 형식에 매핑되는 테이블에 대 한 정의가 포함 되지 않습니다.Click Next and the Create Database Wizard generates data definition language (DDL) for creating a database The generated DDL is displayed in the Summary and Settings Dialog Box Note, that the DDL does not contain a definition for a table that maps to the enumeration type
  5. 마침 을 클릭 하면 DDL 스크립트가 실행 되지 않습니다 .를 클릭 합니다.Click Finish Clicking Finish does not execute the DDL script.
  6. 데이터베이스 만들기 마법사는 다음 작업을 수행 합니다. T-sql 편집기에서 enumtest 를 엽니다. .edmx 파일의 저장소 스키마 및 매핑 섹션에서 연결 문자열 정보를 App.config 파일에 추가 합니다.The Create Database Wizard does the following: Opens the EnumTest.edmx.sql in T-SQL Editor Generates the store schema and mapping sections of the EDMX file Adds connection string information to the App.config file
  7. T-sql 편집기에서 마우스 오른쪽 단추를 클릭 하 고 서버에 연결 대화 상자가 나타납니다 .를 선택 하 고 2 단계의 연결 정보를 입력 한 다음 연결클릭 합니다.Click the right mouse button in T-SQL Editor and select Execute The Connect to Server dialog appears, enter the connection information from step 2 and click Connect
  8. 생성 된 스키마를 보려면 SQL Server 개체 탐색기에서 데이터베이스 이름을 마우스 오른쪽 단추로 클릭 하 고 새로 고침 을 선택 합니다.To view the generated schema, right-click on the database name in SQL Server Object Explorer and select Refresh

데이터 유지 및 검색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 EnumTestModelContainer())
{
    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} and Name: {1}",
        department.DepartmentID,  
        department.Name);
}

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

DepartmentID: 1 Name: English

데이터베이스의 데이터를 보려면 SQL Server 개체 탐색기에서 데이터베이스 이름을 마우스 오른쪽 단추로 클릭 하 고 새로 고침을 선택 합니다.To view data in the database, right-click on the database name in SQL Server Object Explorer and select Refresh. 그런 다음 테이블에서 마우스 오른쪽 단추를 클릭 하 고 데이터 보기를 선택 합니다.Then, click the right mouse button on the table and select View Data.

요약Summary

이 연습에서는 Entity Framework Designer를 사용 하 여 열거형 형식을 매핑하는 방법 및 코드에서 열거형을 사용 하는 방법을 살펴보았습니다.In this walkthrough we looked at how to map enum types using the Entity Framework Designer and how to use enums in code.