O/R 디자이너를 사용하여 LINQ to SQL 클래스 만들기
업데이트: 2007년 11월
O/R 디자이너(개체 관계형 디자이너)를 사용하여 LINQ to SQL 클래스를 데이터베이스의 테이블에 매핑할 수 있습니다. 이러한 매핑된 클래스를 엔터티 클래스라고도 합니다. 엔터티 클래스의 속성은 테이블의 열에 매핑되며, Windows Form의 컨트롤에 데이터를 바인딩할 수 있습니다. LINQ to SQL에 대한 자세한 내용은 C#에서 LINQ 사용을 참조하십시오.
사전 요구 사항
Visual C# Express Edition을 설치할 때 SQL Server Express Edition을 설치하지 않았으면 계속하기 전에 설치하십시오. SQL Server Compact 3.5 데이터베이스는 현재 LINQ to SQL에서 지원되지 않습니다. SQL Server Express Edition을 가져오는 방법에 대한 자세한 내용은 방법: 샘플 데이터베이스 설치 항목의 SQL Server Express 버전 가져오기 단원을 참조하십시오.
SQL Server 버전의 Northwind 샘플 데이터베이스에 액세스할 수 있는 권한이 있어야 합니다. 이 데이터베이스를 가져오고 설치하는 방법에 대한 자세한 내용은 방법: 샘플 데이터베이스 설치를 참조하십시오.
O/R 디자이너 열기
O/R 디자이너를 열려면
파일 메뉴에서 새 프로젝트를 클릭합니다.
새 프로젝트 대화 상자에서 Windows Forms 응용 프로그램을 클릭하고 이름을 LINQToSQLSample로 지정한 다음 확인을 클릭합니다.
새 Windows Forms 프로젝트가 열립니다.
프로젝트 메뉴에서 새 항목 추가를 클릭합니다.
LINQ to SQL 클래스 템플릿을 클릭하고 이름 상자에 NorthwindSample.dbml을 입력합니다.
추가를 클릭합니다.
빈 LINQ to SQL 클래스 파일(NorthwindSample.dbml)이 프로젝트에 추가되고 O/R 디자이너가 열립니다.
O/R 디자이너는 두 개의 디자인 화면, 즉 왼쪽의 엔터티 창과 오른쪽의 메서드 창 영역으로 구성됩니다. 엔터티 창은 파일에 정의된 엔터티 클래스를 표시하는 기본 디자인 화면이며, 메서드 창은 저장 프로시저와 함수에 매핑된 DataContext 메서드를 표시하는 디자인 화면입니다. O/R 디자이너를 마우스 오른쪽 단추로 클릭한 다음 메서드 창 숨기기를 클릭하여 메서드 창을 숨길 수 있습니다. 이 단원에서는 메서드 창을 사용하지 않지만 DataContext 메서드(O/R 디자이너)에서 메서드 창에 대해 자세히 알아볼 수 있습니다.
기본 디자인 화면을 클릭하고 속성 창에서 해당 이름이 NorthwindSampleDataContext인지 확인합니다. 데이터베이스 탐색기에서 O/R 디자이너 화면으로 데이터베이스 테이블을 끌어와 엔터티 클래스를 만들 수 있습니다. 그러나 처음에는 데이터베이스에 대한 연결을 만들어야 합니다. 이 프로세스는 SQL Server Express 데이터베이스를 사용한다는 점을 제외하고 방법: 데이터베이스에 연결(C#)에서 설명하는 프로세스와 유사합니다.
Northwind 샘플 데이터베이스에 연결하려면
보기 메뉴에서 다른 창을 가리킨 다음 데이터베이스 탐색기를 클릭합니다.
데이터베이스 탐색기가 열립니다.
데이터베이스에 연결 단추를 클릭합니다.
연결 추가 대화 상자가 열립니다.
연결 추가 대화 상자에서 데이터 소스가 Microsoft SQL Server 데이터베이스 파일인지 확인합니다.
찾아보기를 클릭하고 Northwind.mdf 데이터베이스를 선택합니다.
연결 테스트를 클릭하여 연결에 성공했는지 확인합니다.
확인을 클릭하여 연결 추가 대화 상자를 닫습니다.
엔터티 클래스 만들기
이제 Northwind 데이터베이스의 테이블이 데이터베이스 탐색기에 표시됩니다. 데이터베이스 탐색기에서 항목을 O/R 디자이너로 테이블을 끌어올 수 있습니다. 이렇게 하면 선택한 테이블의 열에 매핑되는 속성이 있는 엔터티 클래스가 자동으로 만들어집니다.
엔터티 클래스를 만들려면
데이터베이스 탐색기에서 Northwind.mdf를 확장한 다음 테이블을 확장합니다.
데이터베이스 탐색기에서 O/R 디자이너 화면으로 Customers를 끌어 옵니다. 프로젝트에 데이터 파일을 복사할 것인지 묻는 메시지가 나타나면 예를 클릭합니다.
Customer라는 엔터티 클래스가 만들어집니다. 이 클래스에는 Customers 테이블의 열에 해당하는 속성이 있습니다.
참고: 엔터티 클래스 이름은 Customers가 아니라 Customer입니다. 이러한 이름 바꾸기 동작을 복수 적용이라고 합니다. 이 동작은 옵션 대화 상자에서 설정하거나 해제할 수 있습니다. 자세한 내용은 옵션 대화 상자(Visual Studio) 및 방법: 복수 적용 설정 및 해제(O/R 디자이너)를 참조하십시오.
데이터베이스 탐색기에서 O/R 디자이너 화면으로 Orders를 끌어 옵니다.
Order라는 엔터티 클래스가 만들어집니다. Order 클래스는 Customer 엔터티 클래스와 관계(연관이라고 함)가 있습니다. Order 클래스의 속성은 Orders 테이블의 열에 해당합니다.
엔터티 클래스를 만든 다음에는 데이터 소스 구성 마법사를 실행하여 데이터 소스 창에 추가할 수 있습니다.
데이터 소스 창에서 엔터티 클래스를 개체 데이터 소스로 추가하려면
빌드 메뉴에서 솔루션 빌드를 클릭합니다.
데이터 메뉴에서 데이터 소스 표시를 클릭합니다.
데이터 소스 창에서 새 데이터 소스 추가 단추를 클릭합니다.
데이터 소스 형식 선택 페이지에서 개체를 클릭하고 다음을 클릭합니다.
LINQToSQLSample을 확장하고 Customer 클래스를 클릭합니다.
참고: Customer 클래스를 사용할 수 없는 경우에는 취소를 클릭하고 프로젝트를 빌드한 다음 마법사를 다시 실행하십시오.
마침을 클릭하여 데이터 소스를 만들고 데이터 소스 창에 Customer 엔터티 클래스를 추가합니다.
Windows Form의 컨트롤을 엔터티 클래스에 바인딩
데이터 소스 창에서 폼으로 테이블 또는 필드를 끌어와 엔터티 클래스에 데이터 바인딩된 컨트롤을 Windows Form에 추가할 수 있습니다.
엔터티 클래스에 바인딩된 컨트롤을 추가하려면
솔루션 탐색기에서 Form1을 마우스 오른쪽 단추로 클릭한 다음 디자이너 보기를 클릭합니다.
데이터 소스 창에서 Customer를 확장합니다.
CompanyName 옆에 있는 드롭다운을 클릭한 다음 Label을 클릭합니다.
CompanyName을 폼으로 끌어 옵니다.
데이터 소스 창에서 Form1로 Orders를 끌어 옵니다. CompanyName 아래에 놓습니다.
솔루션 탐색기에서 Form1을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
폼에서 Form 클래스의 맨 위, 특정 메서드의 외부에 다음 코드를 추가합니다.
private NorthwindSampleDataContext northwindSampleDataContext1 = new NorthwindSampleDataContext();
Form_Load 이벤트에 대한 이벤트 처리기를 만들고 다음 코드를 이벤트 처리기에 추가합니다.
customerBindingSource.DataSource = northwindSampleDataContext1.Customers;
F5 키를 눌러 코드를 실행합니다.
폼이 열리면 bindingNavigatorMoveNextItem 단추를 클릭하여 회사를 스크롤하고 ordersDataGridView가 업데이트되어 선택한 고객의 주문을 표시하는지 확인합니다.
변경 내용 저장
O/R 디자이너에 컨트롤을 추가하는 경우 bindingNavigator에서 저장 단추를 사용할 수 없습니다. 사용자가 변경 내용을 저장할 수 있게 하려면 먼저 저장 단추를 사용할 수 있도록 설정한 다음 코드를 추가하여 변경된 데이터를 저장합니다.
저장 단추를 사용할 수 있도록 설정하려면
bindingNavigator에서 저장 단추를 클릭합니다. 플로피 디스크 아이콘이 있는 단추입니다.
속성 창에서 Enabled 속성을 True로 설정합니다.
저장 단추를 두 번 클릭하여 이벤트 처리기를 만들고 코드 편집기로 전환합니다.
저장 단추 이벤트 처리기에 다음 코드를 추가합니다.
northwindSampleDataContext1.SubmitChanges();
F5 키를 눌러 코드를 실행합니다.
Shipped Date 필드 중 하나의 값을 변경하고 Tab 키를 눌러 변경 내용을 커밋합니다.
Save 단추를 클릭합니다.
폼을 닫습니다.
F5 키를 눌러 변경 내용이 저장되었는지 확인합니다.