다음을 통해 공유


생성된 코드 개요(엔터티 데이터 모델 디자이너)

ADO.NET Entity Framework에서는 .edmx 파일의 CSDL(개념 스키마 정의 언어) 콘텐츠를 기반으로 개체 계층을 자동 생성하는 도구를 제공합니다. 기본적으로 ADO.NET 엔터티 데이터 모델 디자이너(Entity Designer)에서 개체 계층 코드를 생성하는 데 사용하는 사용자 지정 도구는 EntityModelCodeGenerator입니다. 사용자 지정 도구에 대한 자세한 내용은 Implementing Single-File Generators를 참조하십시오. EdmGen.exe 명령줄 도구를 사용할 수도 있습니다. 자세한 내용은 How to: Use EdmGen.exe to Generate Object Model Files을 참조하십시오. EntityModelCodeGenerator 및 EdmGen.exe 명령줄 도구는 EntityClassGenerator 클래스를 사용하여 소스 코드를 생성합니다.

또한 Entity Designer는 텍스트 템플릿을 사용하여 사용자 지정된 개체 계층 코드를 생성할 수 있습니다. 자세한 내용은 방법: 개체 계층 코드 생성 사용자 지정(엔터티 데이터 모델 디자이너)을 참조하십시오.

개체 계층 코드 생성

개체 계층 코드를 생성하는 데 사용되는 기본 사용자 지정 도구는 다음의 여러 방법으로 트리거할 수 있습니다.

  • ADO.NET 엔터티 데이터 모델 마법사를 사용합니다. 자세한 내용은 엔터티 데이터 모델 마법사를 참조하십시오.

  • 모델 업데이트 마법사를 사용합니다. 자세한 내용은 모델 업데이트 마법사를 참조하십시오.

  • Custom Tool .edmx 파일 속성에 지정된 도구를 실행합니다. 이 작업을 수행하려면 솔루션 탐색기에서 .edmx 파일을 마우스 오른쪽 단추로 클릭하고 사용자 지정 도구 실행을 선택합니다. .edmx 파일 속성에 대한 자세한 내용은 .edmx 파일 개요(Entity Framework)를 참조하십시오.

  • .edmx 파일을 저장합니다.

  • 변경된 .edmx 파일의 바깥쪽으로 탭을 이동합니다. 이 경우 Entity Designer에서 열려 있는 변경된 .edmx 파일의 바깥쪽으로 탭을 이동합니다.

  • 변경된 .edmx 파일을 포함하는 프로젝트를 빌드합니다.

    Cc982041.note(ko-kr,VS.100).gif참고:
    위의 옵션은 <모델 이름>.Designer.vb 또는 <모델 이름>.Designer.cs와 같은 Visual Basic 또는 C# 소스 코드 파일을 생성하거나 덮어씁니다.이 파일은 솔루션 탐색기의 .edmx 노드에 추가됩니다.

  • EdmGen.exe 명령줄 도구를 사용합니다. EdmGen.exe 도구를 사용하면 명령줄에서 지정된 이름과 위치의 Visual Basic 또는 C# 소스 코드 파일이 생성됩니다.

Cc982041.note(ko-kr,VS.100).gif참고:
개체 계층 코드가 기본 사용자 지정 도구 또는 EdmGen.exe 도구에 의해 생성되면 기존 개체 계층 코드를 덮어씁니다.개체 계층에 대한 사용자 지정 덮어쓰기를 피하는 방법은 How to: Customize Generated Data Objects을 참조하십시오.

Cc982041.note(ko-kr,VS.100).gif참고:
개념적 모델의 Function Import를 기반으로 생성된 메서드는 ExecuteFunction 메서드를 사용하여 해당 저장 프로시저를 실행합니다.병합 옵션 매개 변수를 사용하지 않는 오버로드를 사용하는 경우 AppendOnly 옵션이 사용됩니다.

Cc982041.note(ko-kr,VS.100).gif참고:
Visual Studio 2010부터는 코드 생성기에서 ObjectContextLazyLoadingEnabled 속성을 개념적 모델에서 정의된 annotation:LazyLoadingEnabled 주석 특성의 값으로 설정합니다.기본적으로 annotation:LazyLoadingEnabled 값은 true로 설정됩니다.

생성된 코드의 네임스페이스 확인

기본적으로 생성된 코드의 네임스페이스는 프로젝트의 응용 프로그램 페이지에 지정된 네임스페이스입니다. .edmx 파일의 Custom Tool Namespace 속성에 네임스페이스를 지정하는 경우 지정된 네임스페이스가 사용됩니다.

프로젝트 형식에 따라 다음 사항을 추가로 고려해야 합니다.

  • Visual Basic 프로젝트의 경우 Custom Tool Namespace 속성에 대해 설정된 값이 없으며 프로젝트에 빈 네임스페이스가 있는 경우 생성된 코드의 네임스페이스는 .edmx 파일에 지정된 개념적 모델 네임스페이스가 됩니다. 자세한 내용은 Default Namespace Determining the Default Namespace를 확인하십시오. 사용자 지정 도구 네임스페이스를 지정하는 경우 Visual Studio 컴파일러에서 프로젝트의 루트 네임스페이스를 지정한 이름 앞에 추가합니다. 지정된 네임스페이스에서 형식이 정의된 경우에도 형식을 선언할 때 defaultnamespace.specifiednamespace를 가져와야 합니다. 예를 들어, 프로젝트의 루트 네임스페이스가 ProjectDefaultNamespace이고 TestNamespace를 지정한 사용자 지정 도구 네임스페이스 속성에 있는 경우 TestNamespace 네임스페이스에 정의된 형식을 선언할 때 Import ProjectDefaultNamespace.TestNamespace를 사용해야 합니다.

  • C# 프로젝트의 경우 Custom Tool Namespace 속성에 대해 지정된 네임스페이스가 없는 경우 생성된 코드의 네임스페이스는 프로젝트의 응용 프로그램 페이지에 지정된 프로젝트의 기본 네임스페이스와 .edmx 파일 위치의 폴더 경로를 합친 것이 됩니다. 예를 들어, 프로젝트의 루트 디렉터리에 상대적인 .edmx 파일 경로가 Folder1/Folder2/Model.edmx인 경우 생성된 코드의 네임스페이스는 ProjectDefaultNamespace.Folder1.Folder2가 됩니다.

  • ASP.NET 웹 사이트 프로젝트에서는 .edmx 파일이 App_Code 폴더의 루트에 있는 경우 생성된 코드의 네임스페이스가 .edmx 파일의 CSDL 콘텐츠에 정의된 개념적 모델의 네임스페이스가 됩니다. 자세한 내용은 Schema Element (CSDL)를 참조하십시오. .edmx 파일이 App_Code 폴더의 하위 폴더에 있는 경우 생성된 코드의 네임스페이스는 App_Code 폴더에 상대적인 폴더 경로가 됩니다. 예를 들어, .edmx 파일이 App_Code/Folder1/Folder2에 있는 경우 생성된 코드의 네임스페이스는 Folder1.Folder2가 됩니다.

프로젝트에서 여러 .edmx 파일 사용

프로젝트에 공통 테이블 이름의 데이터베이스를 기반으로 하는 여러 .edmx 파일이 있는 경우 생성된 코드에 충돌하는 클래스 이름이 포함될 수 있습니다. 이러한 충돌이 발생하는 환경과 충돌을 해결하는 방법은 다음과 같이 프로젝트 형식에 따라 다릅니다.

  • C# 프로젝트에서는 공통 테이블 이름의 데이터베이스를 기반으로 하는 여러 .edmx 파일이 동일한 프로젝트 폴더에 있는 경우 생성된 코드에 충돌하는 클래스 이름이 나타날 수 있습니다. 충돌을 해결하려면 각 .edmx 파일의 Custom Tool Namespace 속성에 대한 고유 값을 지정하거나 각 .edmx 파일을 별도의 프로젝트 하위 폴더에 배치합니다.

  • Visual Basic 프로젝트에서는 공통 테이블 이름의 데이터베이스를 기반으로 하는 여러 .edmx 파일이 프로젝트의 아무 곳에서나 나타나는 경우 생성된 코드에 충돌하는 클래스 이름이 나타날 수 있습니다. 충돌을 해결하려면 각 .edmx 파일의 Custom Tool Namespace 속성에 대한 고유 값을 지정합니다.

  • ASP.NET 웹 사이트 프로젝트에서는 공통 테이블 이름의 데이터베이스를 기반으로 하는 여러 .edmx 파일이 App_Code 폴더 또는 App_Code 디렉터리의 동일한 하위 폴더에 있는 경우 생성된 코드에 충돌하는 클래스 이름이 나타날 수 있습니다. 충돌을 해결하려면 각 .edmx 파일을 App_Code 디렉터리에 있는 별도의 하위 폴더에 배치합니다.

이러한 각각의 경우에서 충돌을 해결하면 각 .edmx 파일에 대해 생성된 코드의 네임스페이스가 변경됩니다. 생성된 클래스를 사용하는 기존 응용 프로그램 코드를 업데이트할 수 있습니다.

Partial 클래스 확장

엔터티 데이터 모델 도구를 통해 생성된 데이터 클래스는 partial 클래스에서 구현됩니다. 생성된 partial 데이터 클래스를 확장하여 개체에 기능을 추가할 수 있습니다. partial 클래스를 사용하면 별도의 소스 파일에서 사용자 지정 메서드 및 속성으로 이 클래스를 확장할 수 있으며, 생성된 파일이 새로 고쳐질 때 사용자 지정 내용을 잃을 염려가 없습니다. 자세한 내용은 How to: Customize Generated Data Objects을 참조하십시오.

단원 내용

참고 항목

개념

.edmx 파일 개요(Entity Framework)