|
방법: LINQ to SQL 클래스 간에 연결 관계 만들기(O/R 디자이너) LINQ to SQL에서 엔터티 클래스 간의 연결은 데이터베이스 테이블 간의 관계와 비슷합니다. 연결 편집기 대화 상자를 사용하여 엔터티 클래스 간의 연결을 만들 수 있습니다. 연결 편집기 대화 상자에서 연결을 만들 때 부모 클래스와 자식 클래스를 선택해야 합니다. 부모 클래스는 기본 키가 있는 엔터티 클래스이고, 자식 클래스는 외래 키가 있는 엔터티 클래스입니다. 예를 들어 Northwind Customers 및 Orders 테이블에 매핑되는 엔터티 클래스를 만들면 Customer 클래스는 부모 클래스가 되고 Order 클래스는 자식 클래스가 됩니다. 참고 연결을 만든 후 O/R 디자이너에서 연결을 선택하면 속성 창에 몇 개의 구성 가능한 속성이 나타납니다. 연결은 관련 클래스 간의 선입니다. 다음 표에서는 연결 속성을 설명합니다.
엔터티 클래스 간에 연결을 만들려면
|
Customer 엔터티 클래스로 개체 데이터 소스 만들기
-------------------------------------------------------
엔터티 클래스는 공용 속성이 있는 다른 클래스와 마찬가지로 개체 데이터 소스로 사용될 수 있습니다. 데이터 소스 창에 추가되고 폼으로 끌어 와서 데이터 바인딩된 컨트롤(개체의 공용 속성에 있는 값에 바인딩된 컨트롤)을 만들 수 있습니다. 데이터 소스 구성 마법사를 실행하고 마법사에서 데이터 소스에 대한 개체를 클릭하여 엔터티 클래스를 데이터 소스 창에 추가합니다.
데이터 소스 창에서 Customer를 개체 데이터 소스로 추가하려면
데이터 바인딩된 컨트롤을 만들어 Windows Form에 데이터 표시
------------------------------------------------------------
데이터 소스 창에서 Windows Form으로 LINQ to SQL 데이터 소스 항목을 끌어 와서 엔터티 클래스에 바인딩된 컨트롤을 만듭니다.
엔터티 클래스에 바인딩된 컨트롤을 추가하려면
customerBindingSource.DataSource
= northwindDataContext1.Customers;
응용 프로그램 테스트
---------------------------------------------
응용 프로그램을 실행합니다. 이 시점에서 폼에는 Customers 테이블의 데이터를 표시하는 DataGridView와 선택된 고객의 주문 데이터를 표시하는 두 번째 DataGridView가 포함되어 있습니다.
참고
저장 단추를 사용할 수 없습니다. 저장 기능은 다음 단원에서 구현합니다.
응용 프로그램을 테스트하려면
저장 기능 구현
-----------------------------------------
앞에서 언급했듯이 기본적으로 저장 단추를 사용할 수 없으며 저장 기능이 구현되어 있지 않습니다. 또한 개체 데이터 소스에 대해 데이터 바인딩된 컨트롤을 만들 때 변경된 데이터를 폼에 저장하기 위한 코드가 자동으로 추가되지 않습니다. 이 단원에서는 LINQ to SQL 개체에서 저장 단추를 사용하고 저장 기능을 구현하는 방법에 대해 설명합니다.
저장 기능을 구현하려면
try { northwindDataContext1.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.Message); } |
응용 프로그램 테스트
----------------------------------------------------------
응용 프로그램을 실행합니다. 저장 단추가 활성화되고 데이터를 저장할 수 있게 됩니다.
응용 프로그램을 테스트하려면
LINQ 쿼리에 바인딩
-----------------------------------------------
CustomerBindingSource를 DataContext에 바인딩하는 것 외에 LINQ 쿼리에 직접 바인딩할 수도 있습니다. LINQ 쿼리를 만드는 방법에 대한 자세한 내용은 LINQ 쿼리 소개(C#)를 참조하십시오.
폼에 Button 및 TextBox 추가
컨트롤을 LINQ 쿼리에 바인딩하는 방법을 배우려면 쿼리 매개 변수를 입력할 수 있는 폼에 컨트롤을 추가한 다음 쿼리를 실행합니다.
컨트롤을 폼에 추가하려면
LINQ 쿼리에 데이터 바인딩
코드를 추가하여 LINQ 쿼리를 실행합니다. 쿼리는 CityTextBox에 입력된 값을 쿼리 매개 변수로 사용합니다.
LINQ 쿼리에 바인딩하려면
RunQueryButton을 두 번 클릭하고 다음 코드를 RunQueryButton_click 이벤트 처리기에 추가합니다.
var CustomersQuery = from customers in northwindDataContext1.Customers
where customers.City == CityTextBox.Text
select customers;
customerBindingSource.DataSource = CustomersQuery;
응용 프로그램 테스트
--------------------------------------------
응용 프로그램을 실행합니다. 이제 특정 도시에 있는 고객에 대해 쿼리할 수 있습니다.
응용 프로그램을 테스트하려면
업데이트(삽입, 업데이트 및 삭제)를 수행하기 위한 기본 동작 재정의
-----------------------------------------------------------
기본적으로 업데이트를 수행하는 논리는 LINQ to SQL 런타임에서 제공합니다. 런타임에서는 엔터티 클래스에 데이터를 채우는 데 사용되는 Select 문을 기반으로 기본 Insert, Update 및 Delete 문을 만듭니다. 기본 동작을 사용하지 않으려면 업데이트 동작을 구성하고 데이터베이스의 데이터를 조작하는 데 필요한 삽입, 업데이트 및 삭제를 수행하기 위한 특정 저장 프로시저를 지정할 수 있습니다. 엔터티 클래스가 조인된 테이블에 매핑되는 때와 같이 기본 동작이 생성되지 않은 경우에도 이렇게 할 수 있습니다. 또한 저장 프로시저를 통해 데이터베이스의 테이블에 액세스해야 하는 경우에 기본 업데이트 동작을 재정의할 수 있습니다.
참고
이 단원에서는 Northwind 데이터베이스의 InsertCustomer, UpdateCustomer 및 DeleteCustomer 저장 프로시저를 추가로 사용할 수 있어야 합니다.
다음은 저장프로시저 만들기에 대한 자세한 설명입니다..
Northwind Customers 테이블의 업데이트 저장 프로시저 만들기 이 연습을 통해 다음 작업을 수행하는 방법을 배웁니다.
사전 요구 사항 이 연습을 완료하려면 다음이 필요합니다. Northwind 샘플 데이터베이스의 SQL Server 버전에 액세스합니다.
Northwind 데이터베이스에 연결 이 연습에서는 Northwind 데이터베이스의 SQL Server 버전에 연결해야 합니다. 다음 절차는 데이터 연결을 만드는 지침입니다. 참고 Northwind SQL Server 데이터베이스에 대한 데이터 연결을 만들려면
저장 프로시저 만들기 서버 탐색기/데이터베이스 탐색기의 Visual Database Tools를 사용하여 Northwind 데이터베이스에 대해 제공된 SQL 스크립트를 실행하여 저장 프로시저를 만듭니다.
SQL 스크립트를 사용하여 저장 프로시저를 만들려면
|
기본 업데이트 동작을 재정의하려면
*** 중요: 상기 그림을 보시면 아시겠지만 틀렸습니다. 2시간을 헤맨 끝에 찾았네요. customerID와 original_CustomerID를 혼동했습니다. 그리고 중요한 한 가지! 프로시저를 빈 공간에 끌어넣으세요. 그러면 자동으로 변환이 체크됩니다. 엔터티 클래스 위에 드래그하여 놓으면 엔터티로 반환이 됩니다. 그러면 프로시저를 버리고 다시 끌어놓아야 합니다. 상기에서 언급한 것처럼....흐흐
응용 프로그램 테스트
--------------------------------------------------------------------------------
응용 프로그램을 다시 실행하여 UpdateCustomers 저장 프로시저가 데이터베이스의 고객 레코드를 제대로 업데이트하는지 확인합니다.
응용 프로그램을 테스트하려면
다음 단계
--------------------------------------------------------------------------------
응용 프로그램 요구 사항에 따라 LINQ to SQL 엔터티 클래스를 만든 후 몇 단계를 더 수행할 수도 있습니다. 이 응용 프로그램에서 보완할 수 있는 사항은 다음과 같습니다.
Insert 및 Delete 명령에 사용할 저장 프로시저를 더 추가합니다. 자세한 내용은 방법: 저장 프로시저를 할당하여 업데이트, 삽입 및 삭제 수행(O/R 디자이너)을 참조하십시오.
다양한 LINQ 쿼리를 생성하여 필터링된 데이터를 반환합니다. 자세한 내용은 방법: 정보 쿼리(LINQ to SQL)를 참조하십시오.