다음을 통해 공유


공간 - 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 공급자도 사용해야 합니다. 자세한 내용은 공간 형식에 대한 공급자 지원을 참조하세요.

두 가지 주요 공간 데이터 형식인 지리 및 기하 도형이 있습니다. 지리 데이터 형식은 타원 데이터(예: GPS 위도 및 경도 좌표)를 저장합니다. 기하 도형 형식은 유클리드(평면) 좌표계의 데이터를 나타냅니다.

비디오 보기

이 비디오에서는 Entity Framework Designer를 사용하여 공간 형식을 매핑하는 방법을 보여줍니다. 또한 LINQ 쿼리를 사용하여 두 위치 간의 거리를 찾는 방법을 보여줍니다.

발표자: 줄리아 코르니치

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

필수 구성 요소

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

Project 설정

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

EF 디자이너를 사용하여 새 모델 만들기

  1. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다.
  2. 왼쪽 메뉴에서 데이터를 선택한 다음 템플릿 창에서 ADO.NET 엔터티 데이터 모델을 선택합니다.
  3. 모델 이름에 UniversityModel.edmx를 입력하고 추가를 클릭합니다.
  4. 엔터티 데이터 모델 마법사 페이지의 모델 콘텐츠 선택 대화 상자에서 빈 모델을 선택합니다.
  5. 마침을 클릭합니다.

모델을 편집하기 위한 디자인 화면을 제공하는 엔터티 디자이너가 표시됩니다.

마법사에서는 다음 작업을 수행합니다.

  • 개념적 모델, 저장소 모델 및 이 두 모델 간 매핑을 정의하는 EnumTestModel.edmx 파일을 생성합니다. 생성된 메타데이터 파일이 어셈블리에 포함되도록 .edmx 파일의 메타데이터 아티팩트 처리 속성을 출력 어셈블리에 포함으로 설정합니다.
  • EntityFramework, System.ComponentModel.DataAnnotations 및 System.Data.Entity 어셈블리에 대한 참조를 추가합니다.
  • UniversityModel.tt 및 UniversityModel.Context.tt 파일을 만들고 .edmx 파일 아래에 추가합니다. 이러한 T4 템플릿 파일은 .edmx 모델의 엔터티에 매핑되는 DbContext 파생 형식 및 POCO 형식을 정의하는 코드를 생성합니다.

새 엔터티 형식 추가

  1. 디자인 화면의 빈 영역을 마우스 오른쪽 단추로 클릭하고 추가 -> 엔터티를 선택하면 새 엔터티 대화 상자가 나타납니다.
  2. 형식 이름에 University를 지정하고 키 속성 이름에 UniversityID를 지정하고 형식을 Int32로 둡니다.
  3. 확인을 클릭합니다.
  4. 엔터티를 마우스 오른쪽 단추로 클릭하고 새로 추가 -> 스칼라 속성을 선택합니다.
  5. 새 속성 이름을 Name으로 바꿉니다.
  6. 다른 스칼라 속성을 추가하고 이름을 위치 속성으로 바꿉니다. 속성 창을 열고 새 속성의 형식을 지리로 변경합니다.
  7. 모델 저장 및 프로젝트 빌드

    참고 항목

    빌드하면 매핑되지 않은 엔터티 및 연결에 대한 경고가 오류 목록에 나타날 수 있습니다. 모델에서 데이터베이스를 생성하도록 선택한 후 오류가 사라지므로 이러한 경고를 무시할 수 있습니다.

모델에서 데이터베이스 생성

이제 모델을 기반으로 하는 데이터베이스를 생성할 수 있습니다.

  1. Entity Designer 화면의 빈 영역을 마우스 오른쪽 단추로 클릭하고 모델에서 데이터베이스 생성을 선택합니다.
  2. 데이터베이스 생성 마법사의 데이터 연결 선택 대화 상자가 표시됩니다. 새 연결 단추를 클릭하고 서버 이름에 (localdb)\mssqllocaldb를, 데이터베이스에 University를 지정한 다음 확인을 클릭합니다.
  3. 새 데이터베이스를 만들 것인지 묻는 대화 상자가 표시되면 를 클릭합니다.
  4. 다음을 클릭하면 데이터베이스 만들기 마법사에서 데이터베이스를 만들기 위한 DDL(데이터 정의 언어)을 생성합니다. 생성된 DDL은 요약 및 설정 대화 상자에 표시되며, DDL에는 열거형 형식에 매핑되는 테이블에 대한 정의가 포함되어 있지 않습니다.
  5. 마침을 클릭합니다. 마침을 클릭하면 DDL 스크립트가 실행되지 않습니다.
  6. 데이터베이스 만들기 마법사는 T-SQL 편집기에서 UniversityModel.edmx.sql을 열고 EDMX 파일의 저장소 스키마 및 매핑 섹션을 생성하며 연결 문자열 정보를 App.config 파일에 추가합니다.
  7. T-SQL 편집기에서 마우스 오른쪽 단추를 클릭하고 서버에 연결 대화 상자가 표시되면 실행을 선택한 다음 2단계의 연결 정보를 입력하고 연결을 클릭합니다.
  8. 생성된 스키마를 보려면 SQL Server 개체 탐색기의 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택합니다.

데이터 유지 및 검색

Main 메서드가 정의된 Program.cs 파일을 엽니다. Main 함수에 다음 코드를 추가합니다.

이 코드는 컨텍스트에 두 개의 새 University 개체를 추가합니다. 공간 속성은 DbGeography.FromText 메서드를 사용하여 초기화됩니다. WellKnownText로 표시되는 지리 지점이 메서드에 전달됩니다. 그런 다음 코드는 데이터를 저장합니다. 그런 다음 해당 위치가 지정된 위치에 가장 가까운 University 개체를 반환하는 LINQ 쿼리가 생성되고 실행됩니다.

using (var context = new UniversityModelContainer())
{
    context.Universities.Add(new University()
    {
        Name = "Graphic Design Institute",
        Location = DbGeography.FromText("POINT(-122.336106 47.605049)"),
    });

    context.Universities.Add(new University()
    {
        Name = "School of Fine Art",
        Location = DbGeography.FromText("POINT(-122.335197 47.646711)"),
    });

    context.SaveChanges();

    var myLocation = DbGeography.FromText("POINT(-122.296623 47.640405)");

    var university = (from u in context.Universities
                                orderby u.Location.Distance(myLocation)
                                select u).FirstOrDefault();

    Console.WriteLine(
        "The closest University to you is: {0}.",
        university.Name);
}

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

The closest University to you is: School of Fine Art.

데이터베이스의 데이터를 보려면 SQL Server 개체 탐색기의 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택합니다. 그런 다음, 테이블에서 마우스 오른쪽 단추를 클릭하고 데이터 보기를 선택합니다.

요약

이 연습에서는 Entity Framework 디자이너를 사용하여 공간 형식을 매핑하는 방법 및 코드에서 공간 형식을 사용하는 방법을 살펴보았습니다.