|
사전 요구 사항
--------------------------------------------------------------
이 연습을 완료하려면 다음이 필요합니다.
연습: LINQ to SQL 클래스 만들기(O/R 디자이너)에서 만든 프로젝트
Northwind 샘플 데이터베이스에 대한 액세스.
ORDesignerWalkthrough 솔루션 열기
----------------------------------------------------------------
ORDesignerWalkthrough 솔루션을 열려면
파일 메뉴에서 열기를 가리킨 후 프로젝트/솔루션을 클릭한 다음 ORDesignerWalkthrough.sln 파일이 있는 위치로 이동합니다.
변경 내용에 대한 유효성 검사를 특정 열의 값에 추가
------------------------------------------------------------------
이 연습 부분에서는 유효성 검사 논리를 주문의 RequiredDate 열에 추가하게 됩니다. RequiredDate가 현재 날짜보다 이전인지 확인하는 코드를 추가합니다. 유효성 검사는 사용자 인터페이스 대신 실제 클래스 정의에서 수행되기 때문에 값에 대한 유효성 검사가 실패하면 예외가 throw됩니다.
열의 값을 변경하는 동안 데이터의 유효성을 검사하려면
O/R 디자이너에서 Northwind.dbml 파일을 엽니다. 솔루션 탐색기에서 Northwind.dbml 파일을 두 번 클릭합니다.
유효성 검사를 주문의 RequiredDate에 추가하는 중이므로 디자이너에서 Order 클래스를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
코드 편집기가 주문의 partial 클래스와 함께 열립니다.
커서를 partial Order 클래스에 놓습니다.
다음 코드를 partial Order 클래스에 추가하여 RequiredDate에 입력된 값이 현재 날짜보다 빠르지 않도록 합니다.
partial void OnRequiredDateChanging(System.DateTime? value)
{
if (value < System.DateTime.Today)
{
throw new System.Exception("Required Date cannot be in the past");
}
}
응용 프로그램 테스트
-----------------------------------------------------------
유효성 검사 논리를 테스트하려면 응용 프로그램을 실행하고 유효성 검사가 실패하도록 하는 값을 입력해야 합니다.
응용 프로그램을 테스트하려면
F5 키를 누릅니다.
주문이 표시된 표에서 주문의 RequiredDate를 현재 날짜보다 빠른 날짜로 변경하고 레코드에서 빠져 나와서 변경 내용을 적용합니다.
새 값에 대한 유효성 검사는 실패하고 예상대로 예외가 thrown됩니다.
폼을 닫아 디버깅을 중지합니다.
DataGridView에서 유효성 검사 오류 처리
------------------------------------------------
응용 프로그램을 테스트하면 DataError 이벤트를 처리하도록 개발자에게 지시하는 DataGridView에서 오류 메시지가 발생합니다. 다음 절차에서는 이 이벤트를 처리하는 방법을 보여 줍니다.
DataGridView에서 유효성 검사 오류를 처리하려면
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(e.Exception.Message);
}
업데이트에 대한 유효성 검사를 엔터티 클래스에 추가
--------------------------------------------------------------
변경하는 동안 값을 검사하는 작업 이외에도 전체 엔터티 클래스에 대해 업데이트를 시도할 때 데이터의 유효성을 검사할 수 있습니다. 비즈니스 규칙에서 여러 열의 값에 대한 비교를 요구하는 경우 업데이트를 시도하는 동안 유효성 검사를 실행하면 이 작업을 수행합니다. 예를 들어 다음 절차에서는 운송비가 설정된 한계보다 적은 경우 올바른 선적 회사가 사용되었는지를 확인하는 방법을 보여 줍니다.
엔터티 클래스에 대한 업데이트 동안 데이터의 유효성을 검사하려면
O/R 디자이너에서 Northwind.dbml 파일을 엽니다. 솔루션 탐색기에서 Northwind.dbml 파일을 두 번 클릭합니다.
유효성 검사를 전체 Order 클래스의 업데이트에 추가하는 중이므로 액세스해야 하는 부분 메서드는 생성된 DataContext 클래스(NorthwindDataContext)에 위치합니다. O/R 디자이너에서 빈 영역을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
NorthwindDataContext의 partial 클래스에 코드 편집기가 열립니다.
커서를 NorthwindDataset partial 클래스에 놓습니다.
Visual Basic 프로젝트의 경우:
(선언)이라 표시된 콤보 상자인 메서드 이름 목록을 확장합니다.
UpdateOrder를 클릭합니다.
UpdateOrder 메서드가 partial NorthwindDataContext 클래스에 추가됩니다.
Freight 값이 10보다 작으면 Federal Shipping이 배달되지 않습니다. 따라서 다음 코드를 UpdateOrder 메서드 내에 추가하여 Freight 값이 10보다 작은 경우 ShipVia에 입력된 값이 Federal Shipping이 되지 않도록 합니다.
VB C# C++ F# JScript
복사
이 언어는 지원되지 않거나 사용할 수 있는 코드 예가 없습니다.
C# 프로젝트의 경우:
다음 코드를 partial NorthwindDataContext 클래스에 추가하여 Freight 값이 0보다 작은 경우 ShipVia에 입력된 값이 Federal Shipping이 되지 않도록 합니다.
VB C# C++ F# JScript
복사
partial void UpdateOrder(Order instance)
{
if ((instance.ShipVia == 3) && (instance.Freight < 10))
{
string ErrorMessage = "Federal Shipping " +
"does not deliver for less than 10. " +
"You must use a different shipper.";
throw new System.Exception(ErrorMessage);
}
}
응용 프로그램 테스트
----------------------------------------------------------
유효성 검사 논리를 테스트하려면 응용 프로그램을 실행하고 유효성 검사가 실패하도록 하는 값을 입력합니다.
응용 프로그램을 테스트하려면
F5 키를 누릅니다.
주문이 표시된 표에서 ShipVia가 3인 레코드를 찾습니다. Freight를 5로 변경하고 레코드를 빠져 나와서 변경 내용을 적용합니다.
레코드가 업데이트를 위해 실제로 전송되지 않으면 유효성 검사가 수행되지 않기 때문에 유효성 검사의 실패를 아직은 확인할 수 없습니다.
폼에 있는 Save 단추를 클릭합니다.
이 경우 유효성 검사가 실패하고 예외가 thrown됩니다.
폼을 닫아 디버깅을 중지합니다.