방법: 뷰를 미리 생성하여 쿼리 성능 향상
Entity Framework 에서 개념적 모델에 대해 쿼리를 실행하거나 데이터 소스에 변경 내용을 저장하려면 먼저 로컬 쿼리 뷰 집합을 생성하여 데이터베이스에 액세스해야 합니다. 뷰는 응용 프로그램 도메인별로 캐시되는 메타데이터의 일부입니다. 동일한 응용 프로그램 도메인에 개체 컨텍스트 인스턴스를 여러 개 만들면 각 인스턴스에서 뷰를 다시 생성하지 않고 캐시된 메타데이터의 뷰를 다시 사용합니다. 뷰 생성은 단일 쿼리를 실행하기 위한 전체 비용의 큰 부분을 차지하므로 Entity Framework 를 사용하여 이러한 뷰를 미리 생성한 다음 컴파일된 프로젝트에 포함할 수 있습니다. 자세한 내용은 성능 고려 사항(Entity Framework)을 참조하십시오.
Entity Framework 모델 및 매핑 파일의 생성과 유효성 검사 외에도 EDM 생성기(EdmGen.exe) 도구는 이러한 뷰를 미리 생성하는 데 사용됩니다. 이 항목에서는 EdmGen.exe를 사용하여 School 모델에 대한 뷰를 미리 생성하고 프로젝트에 뷰 파일을 추가하는 방법을 보여 줍니다. School 모델은 Entity Framework 퀵 스타트에서 만듭니다. 최종 절차에서는 모델 및 매핑 파일을 ASP.NET 웹 응용 프로그램에 포함 리소스로 다시 추가하는 방법을 보여 줍니다.
T4(Text Template Transformation Toolkit)를 사용하여 미리 컴파일된 뷰를 생성할 수도 있습니다. 자세한 내용은 How to use a T4 template for View Generation을 참조하십시오.
참고: |
---|
이 항목의 절차에서는 Visual Studio의 빌드 전 및 빌드 후 이벤트를 사용합니다. 이러한 이벤트는 ASP.NET 웹 사이트에서 지원되지 않습니다. ASP.NET 웹 사이트에서 사용되는 뷰를 미리 생성하려면 별도의 클래스 라이브러리에 .edmx 파일을 만들고 클래스 라이브러리 프로젝트에 대해 How to: Use a Model Defined in a Class Library의 절차를 사용한 다음 ASP.NET 웹 사이트 프로젝트에서 클래스 라이브러리 프로젝트를 참조합니다. 또는 ASP.NET 웹 사이트 대신 ASP.NET 웹 응용 프로그램 프로젝트를 사용합니다. 이렇게 하면 이 항목의 절차를 사용하여 ASP.NET 웹 응용 프로그램과 동일한 프로젝트에 미리 생성된 뷰를 포함할 수 있습니다. |
또한 런타임에 미리 생성된 뷰의 유효성을 검사하여 모델 및 매핑 파일의 현재 버전과 일치하는지 확인할 수 있습니다.
이 항목의 절차에서는 School 모델을 사용합니다. 퀵 스타트(Entity Framework)를 수행하여 이 모델을 생성할 수 있습니다. 빌드 프로세스에서 이미 출력 디렉터리에 모델 및 매핑 파일을 생성하고 있을 경우 첫 번째 절차를 건너뛰어도 됩니다.
School 모델에 대한 모델 및 매핑 파일을 출력 디렉터리에 생성하려면
솔루션 탐색기에서 School.edmx 파일을 두 번 클릭합니다.
그러면 School 모델이 Entity Designer에 표시됩니다.
모델 브라우저에서 SchoolModel 모델을 선택하고 메타데이터 아티팩트 처리를 출력 디렉터리로 복사로 변경합니다.
그러면 모델 및 매핑 파일이 출력 디렉터리에 생성됩니다.
솔루션을 빌드합니다.
모델 및 매핑 파일이 출력 디렉터리에 생성됩니다.
Visual Basic 프로젝트에 뷰 생성을 추가하려면
솔루션 탐색기에서 빌드 이벤트를 지정할 프로젝트를 선택합니다.
프로젝트 메뉴에서 프로젝트 속성을 클릭합니다.
속성 페이지에서 컴파일 탭을 클릭합니다.
빌드 이벤트 단추를 클릭합니다.
빌드 이벤트 대화 상자에서 줄 바꿈 없이 다음 빌드 전 이벤트를 추가합니다.
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:VB /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.vb"
확인을 클릭합니다.
프로젝트 속성 페이지를 닫습니다.
솔루션을 빌드합니다.
School.Views.vb 뷰 파일이 생성됩니다.
솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 기존 항목 추가를 선택합니다.
기존 항목 추가 대화 상자에서 프로젝트의 루트 폴더로 이동한 다음 School.Views.vb 파일을 선택합니다.
추가를 클릭합니다.
솔루션을 빌드합니다.
C# 프로젝트에 뷰 생성을 추가하려면
솔루션 탐색기에서 빌드 이벤트를 지정할 프로젝트를 선택합니다.
프로젝트 메뉴에서 속성을 선택합니다.
빌드 이벤트 탭을 선택합니다.
빌드 전 이벤트 명령줄 창에서 줄 바꿈 없이 다음 빌드 전 이벤트를 추가합니다.
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.cs"
솔루션을 빌드합니다.
School.Views.cs 뷰 파일이 생성됩니다.
솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 기존 항목 추가를 선택합니다.
그러면 기존 항목 추가 대화 상자가 나타납니다.
프로젝트의 루트 폴더로 이동한 다음 School.Views.cs 파일을 선택합니다.
추가를 클릭합니다.
솔루션을 빌드합니다.
매핑 및 모델 파일을 ASP.NET 프로젝트의 포함 리소스로 다시 추가하려면
프로젝트 메뉴에서 기존 항목 추가를 클릭합니다.
프로젝트의 출력 디렉터리로 이동하고 School.csdl을 선택한 다음 확인을 클릭합니다.
솔루션 탐색기에서 추가된 파일을 선택합니다.
속성에서 빌드 동작을 포함 리소스로 설정합니다.
School.ssdl 파일 및 School.msl 파일에 대해 1-3단계를 반복합니다.
솔루션 탐색기에서 App.config 파일을 두 번 클릭한 후 다음 형식 중 하나에 따라 connectionString 특성의 Metadata 매개 변수를 수정합니다.
Metadata=
res://<assemblyFullName>/<resourceName>;
Metadata=
res://*/<resourceName>;
Metadata=res://*;
resourceName
에 프로젝트 네임스페이스가 포함될 수도 있습니다. 자세한 내용은 연결 문자열(Entity Framework)을 참조하십시오.
참고 항목
참조
기타 리소스
Entity Data Model Tools
Isolating Performance with Precompiled/Pre-generated Views in the Entity Framework 4