방법: 뷰를 미리 생성하여 쿼리 성능 향상(Entity Framework)

EDM(엔터티 데이터 모델)에 대해 쿼리를 실행하기 위해 엔터티 프레임워크는 먼저 데이터베이스 액세스에 사용되는 뷰 집합을 생성합니다. 엔터티 프레임워크는 쿼리를 처음 실행할 때 뷰를 생성한 다음 ObjectContext 인스턴스의 수명 동안 이러한 뷰를 유지합니다. 뷰 생성은 단일 쿼리를 실행하기 위한 전체 비용의 큰 부분을 차지하므로 엔터티 프레임워크를 사용하여 이러한 뷰를 미리 생성한 다음 컴파일된 프로젝트에 포함할 수 있습니다. EDM 매핑과 모델 파일의 생성 및 유효성 검사 외에도 EDM 생성기(EdmGen.exe) 도구는 이러한 뷰를 미리 생성하는 데 사용됩니다. 이 항목에서는 EdmGen.exe를 사용하여 School 모델에 대한 뷰를 미리 생성하고 프로젝트에 뷰 파일을 추가하는 방법을 보여 줍니다. School 모델은 엔터티 프레임워크 퀵 스타트에서 만듭니다. 최종 절차에서는 모델 및 매핑 파일을 ASP.NET 웹 응용 프로그램에 포함 리소스로 다시 추가하는 방법을 보여 줍니다.

Note참고

이 항목의 절차에서는 Visual Studio의 빌드 전 및 빌드 후 이벤트를 사용합니다. 이러한 이벤트는 ASP.NET 웹 사이트에서 지원되지 않습니다. ASP.NET 웹 사이트에서 사용되는 EDM에 대한 뷰를 미리 생성하려면 별도 클래스 라이브러리에 EDM을 만들고, 클래스 라이브러리 프로젝트에 대해 다음 절차를 사용한 다음 ASP.NET 웹 사이트 프로젝트에서 클래스 라이브러리 프로젝트를 참조해야 합니다. 또는 ASP.NET 웹 사이트 대신 ASP.NET 웹 응용 프로그램 프로젝트를 사용합니다. 이렇게 하면 이 항목의 절차를 사용하여 ASP.NET 웹 응용 프로그램과 동일한 프로젝트에 미리 생성된 뷰를 포함할 수 있습니다.

런타임에 미리 생성된 뷰의 유효성을 검사하여 EDM의 현재 버전과 일치하는지 확인됩니다. 이 절차는 뷰가 EDM과 일치하도록 하기 위한 것입니다. 빌드 프로세스에서 이미 출력 디렉터리에 모델 및 매핑 파일을 생성하고 있을 경우 첫 번째 절차를 건너뛰어도 됩니다. 이 항목의 절차에서는 School 모델을 사용합니다. 퀵 스타트(Entity Framework)를 수행하여 이 모델을 생성할 수 있습니다.

Note참고

이 항목의 절차를 수행하려면 Visual Studio 2008 SP1(서비스 팩 1)이 필요합니다.

School 모델에 대한 모델 및 매핑 파일을 출력 디렉터리에 생성하려면

  1. 솔루션 탐색기에서 School.edmx 파일을 두 번 클릭합니다.

    그러면 School 모델이 Entity Designer에 표시됩니다.

  2. 모델 브라우저에서 SchoolModel 모델을 선택하고 메타데이터 아티팩트 처리출력 디렉터리로 복사로 변경합니다.

    그러면 모델 및 매핑 파일이 출력 디렉터리에 생성됩니다.

  3. 솔루션을 빌드합니다.

    모델 및 매핑 파일이 출력 디렉터리에 생성됩니다.

Visual Basic 프로젝트에 뷰 생성을 추가하려면

  1. 솔루션 탐색기에서 빌드 이벤트를 지정할 프로젝트를 선택합니다.

  2. 프로젝트 메뉴에서 프로젝트속성을 클릭합니다.

  3. 속성 페이지에서 컴파일 탭을 클릭합니다.

  4. 빌드 이벤트 단추를 클릭합니다.

  5. 빌드 이벤트 대화 상자에서 줄 바꿈 없이 다음 빌드 전 이벤트를 추가합니다.

    "%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:VB 
    /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" 
    "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" 
    "/outviews:$(ProjectDir)School.Views.vb"
    
  6. 확인을 클릭합니다.

  7. 프로젝트 속성 페이지를 닫습니다.

  8. 솔루션을 빌드합니다.

    School.Views.cs 뷰 파일이 생성됩니다.

  9. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 기존 항목 추가를 선택합니다.

  10. 기존 항목 추가 대화 상자에서 프로젝트의 루트 폴더로 이동한 다음 School.Views.vb 파일을 선택합니다.

  11. 추가를 클릭합니다.

  12. 솔루션을 빌드합니다.

C# 프로젝트에 뷰 생성을 추가하려면

  1. 솔루션 탐색기에서 빌드 이벤트를 지정할 프로젝트를 선택합니다.

  2. 프로젝트 메뉴에서 속성을 클릭합니다.

  3. 빌드 이벤트 탭을 선택합니다.

  4. 빌드 전 이벤트 명령줄 창에서 줄 바꿈 없이 다음 빌드 전 이벤트를 추가합니다.

    "%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:CSharp 
    /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" 
    "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" 
    "/outviews:$(ProjectDir)School.Views.cs"
    
  5. 솔루션을 빌드합니다.

    School.Views.cs 뷰 파일이 생성됩니다.

  6. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 기존 항목 추가를 선택합니다.

    기존 항목 추가 대화 상자가 나타납니다.

  7. 프로젝트의 루트 폴더로 이동한 다음 School.Views.cs 파일을 선택합니다.

  8. 추가를 클릭합니다.

  9. 솔루션을 빌드합니다.

매핑 및 모델 파일을 ASP.NET 프로젝트의 포함 리소스로 다시 추가하려면

  1. 프로젝트 메뉴에서 기존 항목 추가를 클릭합니다.

  2. 프로젝트의 출력 디렉터리로 이동하고 School.csdl을 선택한 다음 확인을 클릭합니다.

  3. 솔루션 탐색기에서 추가된 파일을 선택합니다.

  4. 속성에서 빌드 동작포함 리소스로 설정합니다.

  5. School.ssdl 파일 및 School.msl 파일에 대해 1-3단계를 반복합니다.

  6. 솔루션 탐색기에서 App.config 파일을 두 번 클릭한 후 다음 형식 중 하나에 따라 connectionString 특성의 Metadata 매개 변수를 수정합니다.

    • Metadata=``res://<assemblyFullName>/<resourceName>;

    • Metadata=``res://*/<resourceName>;

    • Metadata=res://*;

    resourceName에 프로젝트 네임스페이스가 포함될 수도 있습니다. 자세한 내용은 연결 문자열(Entity Framework)을 참조하십시오.

참고 항목

참조

EDM 생성기(EdmGen.exe)

기타 리소스

엔터티 데이터 모델 도구