열거형 지원 - EF 디자이너
참고 항목
EF5 이상만 - 이 페이지에서 다루는 기능, API 등은 Entity Framework 5에 도입되었습니다. 이전 버전을 사용하는 경우 이 정보의 일부 또는 전체가 적용되지 않습니다.
이 비디오 및 단계별 연습에서는 Entity Framework Designer에서 열거형 형식을 사용하는 방법을 보여줍니다. LINQ 쿼리에서 열거형을 사용하는 방법도 보여줍니다.
이 연습에서는 Model First를 사용하여 새 데이터베이스를 만들지만 EF 디자이너를 Database First 워크플로와 함께 사용하여 기존 데이터베이스에 매핑할 수도 있습니다.
열거형 지원은 Entity Framework 5에서 도입되었습니다. 열거형, 공간 데이터 형식 및 테이블 반환 함수와 같은 새로운 기능을 사용하려면 .NET Framework 4.5를 대상으로 해야 합니다. Visual Studio 2012는 기본적으로 .NET 4.5를 대상으로 합니다.
Entity Framework에서 열거형에는 Byte, Int16, Int32, Int64 또는 SByte의 기본 형식이 있을 수 있습니다.
동영상 보기
이 비디오에서는 Entity Framework Designer에서 열거형 형식을 사용하는 방법을 보여줍니다. LINQ 쿼리에서 열거형을 사용하는 방법도 보여줍니다.
발표자: 줄리아 코르니치
필수 구성 요소
이 연습을 완료하려면 Visual Studio 2012, Ultimate, Premium, Professional 또는 Web Express 버전이 설치되어 있어야 합니다.
Project 설정
- Visual Studio 2012를 엽니다.
- 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.
- 왼쪽 창에서 Visual C#을 클릭한 다음 콘솔 템플릿을 선택합니다.
- 프로젝트 이름으로 EnumEFDesigner를 입력하고 확인을 클릭합니다.
EF 디자이너를 사용하여 새 모델 만들기
- 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다.
- 왼쪽 메뉴에서 데이터를 선택한 다음 템플릿 창에서 ADO.NET 엔터티 데이터 모델을 선택합니다.
- 모델 이름에 EnumTestModel.edmx를 입력하고 추가를 클릭합니다.
- 엔터티 데이터 모델 마법사 페이지의 모델 콘텐츠 선택 대화 상자에서 빈 모델을 선택합니다.
- 마침을 클릭합니다.
모델을 편집하기 위한 디자인 화면을 제공하는 엔터티 디자이너가 표시됩니다.
마법사에서는 다음 작업을 수행합니다.
- 개념적 모델, 저장소 모델 및 이 두 모델 간 매핑을 정의하는 EnumTestModel.edmx 파일을 생성합니다. 생성된 메타데이터 파일이 어셈블리에 포함되도록 .edmx 파일의 메타데이터 아티팩트 처리 속성을 출력 어셈블리에 포함으로 설정합니다.
- EntityFramework, System.ComponentModel.DataAnnotations 및 System.Data.Entity 어셈블리에 대한 참조를 추가합니다.
- EnumTestModel.tt 및 EnumTestModel.Context.tt 파일을 만들고 .edmx 파일 아래에 추가합니다. 이러한 T4 템플릿 파일은 .edmx 모델의 엔터티에 매핑되는 DbContext 파생 형식 및 POCO 형식을 정의하는 코드를 생성합니다.
새 엔터티 형식 추가
- 디자인 화면의 빈 영역을 마우스 오른쪽 단추로 클릭하고 추가 -> 엔터티를 선택하면 새 엔터티 대화 상자가 나타납니다.
- 형식 이름에 Department를 지정하고 키 속성 이름에 DepartmentID를 지정하고 형식을 Int32로 둡니다.
- 확인을 클릭합니다.
- 엔터티를 마우스 오른쪽 단추로 클릭하고 새로 추가 -> 스칼라 속성을 선택합니다.
- 새 속성 이름을 Name으로 바꿉니다.
- 새 속성의 형식을 Int32로 변경합니다(기본적으로 새 속성은 문자열 형식임). 형식을 변경하려면 속성 창을 열고 Type 속성을 Int32로 변경합니다.
- 다른 스칼라 속성을 추가하고 예산으로 이름을 바꾼 후 형식을 10진수로 변경합니다.
열거형 형식 추가
Entity Framework 디자이너에서 Name 속성을 마우스 오른쪽 단추로 클릭하고 열거형으로 변환을 선택합니다.
열거형 추가 대화 상자에서 열거형 형식 이름에 DepartmentNames를 입력하고 기본 형식을 Int32로 변경한 다음 형식에 영어, 수학 및 경제학 멤버를 추가합니다.
확인을 누릅니다.
모델 저장 및 프로젝트 빌드
참고 항목
빌드하면 매핑되지 않은 엔터티 및 연결에 대한 경고가 오류 목록에 나타날 수 있습니다. 모델에서 데이터베이스를 생성하도록 선택한 후 오류가 사라지므로 이러한 경고를 무시할 수 있습니다.
속성 창을 보면 Name 속성의 형식이 DepartmentNames로 변경되고 새로 추가된 열거형 형식이 형식 목록에 추가된 것을 알 수 있습니다.
모델 브라우저 창으로 전환하면 형식이 열거형 형식 노드에도 추가된 것을 볼 수 있습니다.
참고 항목
마우스 오른쪽 단추를 클릭하고 열거형 형식 추가를 선택하여 이 창에서 새 열거형 형식을 추가할 수도 있습니다. 형식이 만들어지면 형식 목록에 표시되고 속성과 연결할 수 있습니다.
모델에서 데이터베이스 생성
이제 모델을 기반으로 하는 데이터베이스를 생성할 수 있습니다.
- Entity Designer 화면의 빈 영역을 마우스 오른쪽 단추로 클릭하고 모델에서 데이터베이스 생성을 선택합니다.
- 데이터베이스 생성 마법사의 데이터 연결 선택 대화 상자가 표시됩니다. 새 연결 단추를 클릭하고 서버 이름에 (localdb)\mssqllocaldb를, 데이터베이스에 EnumTest를 지정한 다음 확인을 클릭합니다.
- 새 데이터베이스를 만들 것인지 묻는 대화 상자가 표시되면 예를 클릭합니다.
- 다음을 클릭하면 데이터베이스 만들기 마법사에서 데이터베이스를 만들기 위한 DDL(데이터 정의 언어)을 생성합니다. 생성된 DDL은 요약 및 설정 대화 상자에 표시되며, DDL에는 열거형 형식에 매핑되는 테이블에 대한 정의가 포함되어 있지 않습니다.
- 마침을 클릭합니다. 마침을 클릭하면 DDL 스크립트가 실행되지 않습니다.
- 데이터베이스 만들기 마법사는 T-SQL 편집기에서 EnumTest.edmx.sql을 열고 EDMX 파일의 저장소 스키마 및 매핑 섹션을 생성하며 연결 문자열 정보를 App.config 파일에 추가합니다.
- T-SQL 편집기에서 마우스 오른쪽 단추를 클릭하고 서버에 연결 대화 상자가 표시되면 실행을 선택한 다음 2단계의 연결 정보를 입력하고 연결을 클릭합니다.
- 생성된 스키마를 보려면 SQL Server 개체 탐색기의 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택합니다.
데이터 유지 및 검색
Main 메서드가 정의된 Program.cs 파일을 엽니다. Main 함수에 다음 코드를 추가합니다. 코드는 컨텍스트에 새 Department 개체를 추가합니다. 그런 다음 데이터를 저장합니다. 또한 이 코드는 이름이 DepartmentNames.English인 Department를 반환하는 LINQ 쿼리를 실행합니다.
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);
}
애플리케이션을 컴파일하고 실행합니다. 프로그램에서는 다음이 출력됩니다.
DepartmentID: 1 Name: English
데이터베이스의 데이터를 보려면 SQL Server 개체 탐색기의 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택합니다. 그런 다음, 테이블에서 마우스 오른쪽 단추를 클릭하고 데이터 보기를 선택합니다.
요약
이 연습에서는 Entity Framework 디자이너를 사용하여 열거형 형식을 매핑하는 방법 및 코드에서 열거형을 사용하는 방법을 살펴보았습니다.
.NET