2011-04-11 7 views
2

종종 데이터베이스에 저장하기 전에 몇 가지 사항을 확인해야하는 저장 방법을 다루어야합니다.C# 여러 번 검사를 수행하는 Save 메서드를 구현하는 방법은 무엇입니까?

예를 들어 내가 확인하는 것은 빈 속성과 다른 속성에 의존하는 값입니다.

나는 그런 것들을 구현하는 방법에 대해 항상 고심하고있다. 내가 묻는 질문은 다음과 같습니다.

  • Save 메서드의 반환 값으로 부울을 사용해야합니까? 그리고 클라이언트 코드에서, 그것의 검사가 틀리면 최종 사용자에게 "저장하지 못했습니다"라는 메시지 상자를 보여줍니다. 그러나 문제는 사용자에게 을 표시 할 수 없다는 이유인데 저장에 실패했습니다. 그래서 저는이 것을별로 좋아하지 않습니다.
  • 내 저장 방법에서 예외를 throw해야합니까? 따라서 검사가 실패하면 예외가 발생합니까?
  • 아무 것도하지 않습니다. 검사가 실패하면 아무 것도하지 마십시오. 그러나 이것이 진정한 선택은 아니라고 생각합니다.

나는 이것을 어떻게 구현합니까? 어떤 종류의 패턴이 있습니까?

+0

유효성 검사 결과로 상태 개체 또는 튜플을 반환하지 못하게하는 요인은 무엇입니까? –

답변

3

는 이럴 그것은 개체의 유효성을 검사 할 수있는 저장 방법까지이 아니다. 저장이 호출 될 때 유효해야합니다. 따라서 객체가 올바르게 지정되지 않은 경우 예외를 throw하는 것이 좋습니다.

유효성 검사에 대해서는 DataAnnotations라고하는 .NET의 프레임 워크에 내장되어 있습니다. 모든 레이어에서보다 쉽게 ​​검증 할 때 사용하십시오.

+0

나는 동의한다. Save 메서드가 호출되기 전에 '클라이언트'는 유효성 검사를 확인해야합니다. 이러한 유효성 검사 방법은 클라이언트에서 사용할 수 있습니다. 따라서 클라이언트가이 메서드를 호출하지 않으면 Save 메서드가 예외를 throw 할 수 있습니다. 권리? – Martijn

+0

Excactly. 클라이언트는 사용자에게 멋진 오류 메시지를 표시하는 것이 훨씬 쉽기 때문에 유효성 검사를 수행해야합니다. save 메서드는 여전히 유효성 검사를 수행해야하지만 모든 오류는 예기치 않은 것이므로 예외를보고하는 것이 적절합니다. – jgauffin

0

이것은 사용자가 필요로하는 것과 사용자가 필요로하는 것에 따라 달라집니다.
기본적으로 문자열을 반환 할 수 있습니다. null 또는 공백이 있으면 모두 괜찮습니다. 반대로이 문자열은 오류입니다. 따라서 MessageBox를 표시하거나 원하는대로 조치를 취할 수 있습니다.
보통 서버 측 (오류가있는 경우)을 수행하지 않고 오류 자체를 반환하므로 클라이언트 측에서 조치를 취하거나 사용자가 수행 할 작업을 결정할 수 있습니다.
오류가 있거나 오류가 있으면 서버에서 예외를 반환 할 수도 있습니다.

0

왜 저장에 실패했는지 알고 싶다면 여기에있는 예외를 사용하십시오.

1

문자열을 반환하면 안되지만 예외를 throw해야합니다. EmptyPropertyException, DateOutOfBoundException 등과 같은 특정 예외를 생성하고 throw 할 수 있습니다. 이제 올바른 오류 메시지를 표시하기 위해 이러한 예외를 잡는 것은 클라이언트의 몫입니다. 다른 곳에서 약간 다른 오류 메시지를 표시하거나 현지화 된 문자열을 사용해야하는 경우가 있으므로 예외를 사용하는 것이 좋습니다.

+0

예상되는 매개 변수가 누락 된 경우 제어 흐름이 아니므로 예외를 던져 야합니다! –

+0

그러면 입력 유효성 검사가 아닙니다. 입력 유효성 검사는 데이터가 유효한 범위에 있거나 비어 있지 않은지 등입니다. –

0

결과 상태 - 부울 속성이있는 객체, 작업이 성공했는지 여부를 나타내는 객체, 오류가 발생하고 예외가 발생한 경우 사용자에게 메시지를 사용합니다.

관련 문제