연습: 스캐폴딩을 사용하여 새 Dynamic Data 웹 사이트 만들기
업데이트: 2007년 11월
이 연습에서는 ASP.NET Dynamic Data를 사용하는 기본 웹 응용 프로그램을 만드는 방법을 보여 줍니다. Dynamic Data를 사용하면 최소한의 코드만 추가하거나 코드를 전혀 추가하지 않고 데이터 구동 웹 사이트를 만들 수 있습니다. Dynamic Data의 중요한 기능은 스캐폴딩 메커니즘입니다. Dynamic Data 웹 사이트에 스캐폴딩 메커니즘이 설정되어 있으면 ASP.NET에서는 데이터 모델을 분석하여 각 테이블에 대해 웹 페이지를 동적으로 생성합니다. 이렇게 자동 생성된 웹 페이지는 각 테이블에 대해 표시, 삽입, 삭제 및 편집 기능을 제공합니다.
이 연습에서는 AdventureWorks 샘플 데이터베이스의 데이터 페이지를 표시하는 응용 프로그램을 빌드합니다.
이 기능에 대한 자세한 내용을 보려면 비디오를 참조하십시오.
사전 요구 사항
이 연습을 따라 하려면 다음과 같은 요건을 갖추어야 합니다.
Microsoft Visual Studio 2008 서비스 팩 1 또는 Visual Web Developer 2008 Express Edition 서비스 팩 1
AdventureWorks 샘플 데이터베이스 또는 AdventureWorksLT 샘플 데이터베이스. SQL Server 샘플 데이터베이스를 다운로드 및 설치하는 방법에 대한 자세한 내용은 CodePlex 사이트의 Microsoft SQL Server Product Samples: Database를 참조하십시오. 실행 중인 SQL Server 버전(Microsoft SQL Server 2005 또는 Microsoft SQL Server 2008)에 맞는 올바른 샘플 데이터베이스 버전을 설치해야 합니다.
Dynamic Data 웹 사이트 만들기
Visual Studio에서 웹 사이트 템플릿을 사용하여 Dynamic Data 웹 사이트를 만들 수 있습니다.
Dynamic Data 웹 사이트를 만들려면
Visual Studio 또는 Visual Web Developer를 시작합니다.
파일 메뉴에서 새 웹 사이트를 클릭합니다. 이 옵션이 없으면 새로 만들기를 클릭한 다음 웹 사이트를 클릭합니다.
새 웹 사이트 대화 상자가 나타납니다.
Visual Studio에 설치되어 있는 템플릿에서 Dynamic Data 웹 사이트(LINQ to SQL을 사용하려는 경우) 또는 Dynamic Data 엔터티 웹 사이트(ADO.NET Entity Framework를 사용하려는 경우)를 선택합니다.
첫 번째 위치 상자에서 파일 시스템을 선택하고 두 번째 상자에 웹 사이트의 페이지를 보관할 폴더의 이름을 입력합니다.
예를 들어, 폴더 이름으로 C:\WebSites\DynamicData를 입력합니다.
언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.
확인을 클릭합니다.
Visual Studio에서 웹 사이트의 폴더와 구조가 만들어집니다.
웹 사이트에 데이터 추가
다음 단계에서는 프로젝트에 데이터베이스를 추가합니다. 이렇게 하려면 Visual Studio에서 제공하는 도구를 사용하여 데이터베이스 엔터티를 나타내는 클래스를 만든 다음 Dynamic Data에서 사용할 데이터 컨텍스트를 등록합니다. 선택한 템플릿에 따라 다음과 같이 데이터베이스 모델을 만듭니다.
Dynamic Data 웹 사이트 템플릿을 사용하여 웹 사이트를 만든 경우 LINQ to SQL을 사용하여 데이터베이스 모델을 만들어야 합니다.
Dynamic Data 엔터티 웹 사이트 템플릿을 사용하여 웹 사이트를 만든 경우 Entity Framework를 사용하여 데이터베이스 모델을 만들어야 합니다.
데이터 모델 선택에 대한 자세한 내용은 ASP.NET Dynamic Data 지침을 참조하십시오.
프로젝트에 데이터베이스 파일을 추가하려면
웹 사이트에 App_Data 폴더가 없는 경우 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 ASP.NET 폴더 추가를 클릭한 다음 App_Data를 클릭합니다.
솔루션 탐색기에서 App_Data 폴더를 마우스 오른쪽 단추로 클릭한 다음 기존 항목 추가를 클릭합니다.
기존 항목 추가 대화 상자가 표시됩니다.
AdventureWorks 데이터베이스 파일(AdventureWorks_Data.mdf)이 설치되어 있는 위치를 입력합니다.
기본적으로 .mdf 파일은 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf 경로에 설치됩니다.
참고: 이 절차에서는 프로젝트에서 데이터베이스 파일의 복사본을 만듭니다. 데이터베이스 복사본을 만드는 것이 비효율적이라면 데이터베이스 파일을 직접 연결하는 등 다른 방법을 사용하여 연결할 수 있습니다. 그러나 이 작업을 위한 절차는 이 연습에서 다루지 않습니다.
다음 단계에서는 데이터 모델을 만듭니다. LINQ to SQL 또는 ADO.NET Entity Framework 중 어떤 것을 사용하는지에 따라 데이터 모델 생성 절차가 약간 달라집니다.
LINQ to SQL을 사용하여 데이터 모델을 만들려면
웹 사이트에 아직 App_Code 폴더가 없는 경우 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 ASP.NET 폴더 추가를 클릭한 다음 App_Code를 클릭합니다.
App_Code 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.
Visual Studio에 설치되어 있는 템플릿에서 LINQ to SQL 클래스를 클릭합니다.
이름 상자에 데이터베이스 모델의 이름을 입력합니다.
예를 들어 AdventureWorks.dbml이라는 이름을 입력합니다.
추가를 클릭합니다.
개체 관계형 디자이너가 표시됩니다.
O/R 디자이너에서 서버 탐색기 링크(Visual Web Developer에서는 데이터베이스 탐색기)를 클릭합니다.
서버 탐색기(데이터베이스 탐색기)의 데이터 연결에서 데이터베이스 파일 노드를 확장한 다음 테이블 노드를 확장합니다.
모든 테이블을 O/R 디자이너로 끌어 옵니다.
각 테이블이 해당 데이터베이스 테이블의 이름이 지정된 엔터티로 표시됩니다.
AdventureWorks.dbml 파일을 저장합니다.
솔루션 탐색기에서 .dbml 파일 노드 아래의 AdventureWorks.designer.cs 또는 AdventureWorks.designer.vb 파일을 엽니다.
.dbml 파일에는 데이터베이스를 나타내는 AdventureWorksDataContext 클래스뿐만 아니라 Product 및 Employee 클래스와 같은 데이터베이스 테이블을 나타내는 엔터티 클래스가 들어 있습니다. AdventureWorksDataContext 클래스의 매개 변수가 없는 생성자는 Web.config 파일에서 연결 문자열을 읽습니다.
Web.config 파일을 엽니다.
connectionStrings 요소에는 AdventureWorks 데이터베이스에 대한 연결 문자열이 들어 있습니다.
클래스 파일과 Web.config 파일을 닫습니다.
Entity Framework용 데이터 모델을 만들려면
웹 사이트에 아직 App_Code 폴더가 없는 경우 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 ASP.NET 폴더 추가를 클릭한 다음 App_Code를 클릭합니다.
App_Code 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.
Visual Studio에 설치되어 있는 템플릿에서 ADO.NET 엔터티 데이터 모델을 클릭합니다.
이름 상자에 데이터베이스 모델의 이름을 입력합니다.
예를 들어 AdventureWorks.edmx라는 이름을 입력합니다.
추가를 클릭합니다.
엔터티 데이터 모델 마법사 창이 표시됩니다.
데이터베이스에서 생성을 클릭합니다.
이렇게 하면 데이터베이스에서 모델을 생성하도록 지정됩니다.
응용 프로그램이 데이터베이스에 연결하기 위해 사용해야 하는 데이터 연결 목록에서 AdventureWorks_Data.mdf를 선택합니다.
다른 이름으로 Web.Config의 entity 연결 설정 저장 확인란이 선택되어 있는지 확인합니다. 기본 연결 문자열 이름을 그대로 둘 수 있습니다.
다음을 클릭합니다.
모델에 포함할 데이터베이스 개체를 지정할 수 있는 페이지가 표시됩니다.
테이블 노드를 선택하여 데이터베이스의 모든 테이블을 선택합니다. 기본 모델 네임스페이스를 그대로 둘 수 있습니다.
마침을 클릭합니다.
ADO.NET 엔터티 데이터 모델 디자이너가 표시됩니다. 디자이너를 닫습니다.
솔루션 탐색기에서 .edmx 파일 노드 아래의 AdventureWorks.designer.cs 또는 AdventureWorks.designer.vb 파일을 엽니다.
.edmx 파일에는 데이터베이스를 나타내는 AdventureWorksDataContext 클래스뿐만 아니라 Product 및 Employee 클래스와 같은 데이터베이스 테이블을 나타내는 엔터티 클래스가 들어 있습니다.
Web.config 파일을 엽니다.
connectionStrings 요소에는 AdventureWorks 데이터베이스에 대한 연결 문자열이 들어 있습니다.
클래스 파일과 Web.config 파일을 닫습니다.
다음 단계에서는 Dynamic Data에서 사용할 데이터 모델을 등록합니다.
데이터 컨텍스트를 등록하려면
Global.asax 파일을 엽니다.
LINQ to SQL을 사용하는 경우 RegisterRoutes 메서드에 다음 줄을 추가합니다.
model.RegisterContext(GetType(AdventureWorksDataContext), _ New ContextConfiguration() With {.ScaffoldAllTables = True})
model.RegisterContext(typeof(AdventureWorksDataContext), new ContextConfiguration() { ScaffoldAllTables = true });
이 코드 줄은 Dynamic Data에서 사용하도록 LINQ to SQL 데이터 컨텍스트를 등록하고 데이터 모델의 자동 스캐폴딩을 사용하도록 설정합니다.
주의: 스캐폴딩을 사용하도록 설정하면 데이터 모델의 모든 테이블이 표시 및 편집 작업에 노출되기 때문에 보안상 위험할 수 있습니다. 자세한 내용은 ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요를 참조하십시오.
Entity Framework를 사용하는 경우 RegisterRoutes 메서드에 다음 줄을 추가합니다.
model.RegisterContext(GetType(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), _ New ContextConfiguration() With {.ScaffoldAllTables = True})
model.RegisterContext(typeof(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), new ContextConfiguration() { ScaffoldAllTables = true });
이 코드 줄은 Dynamic Data에서 사용하도록 Entity Framework 데이터 컨텍스트를 등록하고 데이터 모델의 자동 스캐폴딩을 사용하도록 설정합니다.
주의: 스캐폴딩을 사용하도록 설정하면 데이터 모델의 모든 테이블이 표시 및 편집 작업에 노출되기 때문에 보안상 위험할 수 있습니다. 자세한 내용은 ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요를 참조하십시오.
Global.asax 파일을 저장한 다음 닫습니다.
Dynamic Data 웹 사이트 테스트
이제 방금 만든 Dynamic Data 웹 사이트를 테스트할 수 있습니다.
웹 사이트를 테스트하려면
솔루션 탐색기에서 Default.aspx 페이지를 마우스 오른쪽 단추로 클릭한 다음 브라우저에서 보기를 클릭합니다.
데이터 모델에 추가한 테이블이 포함된 목록이 페이지에 표시됩니다.
테이블 중 하나를 클릭합니다. 예를 들어 Products 테이블을 클릭합니다.
선택한 테이블의 데이터가 들어 있는 페이지가 표시됩니다. 테이블에 외래 키 필드가 있는 경우에는 참조 테이블의 정보 페이지로 연결되는 링크가 제공됩니다. 테이블이 일대다 관계의 부모 테이블인 경우에는 자식 테이블의 목록 페이지로 연결되는 링크가 제공됩니다.
삭제 단추를 클릭하여 테이블에서 레코드를 삭제합니다.
페이지 번호를 클릭하여 레코드를 탐색합니다.
편집 단추를 클릭하여 테이블의 레코드를 수정합니다.
값을 변경한 다음 업데이트를 클릭하거나 취소를 클릭하여 편집 작업을 취소합니다.
페이지 맨 아래에서 새 항목 삽입 단추를 클릭하여 새 레코드를 만듭니다.
데이터 입력 필드가 포함된 페이지가 표시됩니다.
새 레코드 정보를 입력한 다음 삽입을 클릭하거나, 취소를 클릭하여 삽입 작업을 취소합니다.
작업을 마쳤으면 브라우저를 닫습니다.
다음 단계
이 연습에서는 코드를 작성하지 않고 기본 Dynamic Data 웹 사이트를 만드는 방법을 설명했습니다. 이 연습을 시작으로 Dynamic Data 기능을 살펴보고 Dynamic Data의 기본 동작을 확장할 수 있습니다.
기본 제공 데이터 유효성 검사를 확장하거나 기본 렌더링을 사용자 지정하는 방법에 대한 자세한 내용은 ASP.NET Dynamic Data 모델 개요를 참조하십시오.
기존 컨트롤에 동적 동작을 추가하는 방법에 대한 자세한 내용은 ASP.NET 데이터 바인딩된 컨트롤에 동적 동작 추가를 참조하십시오.
기본 스캐폴딩 동작을 변경하는 방법에 대한 자세한 내용은 ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요를 참조하십시오.