2013-01-07 2 views
1

SQL Server 공급자에 ServiceStack.OrmLite를 사용하고 있습니다.ServiceStack.OrmLite에서 SQL Server 예외 처리를위한 최선의 방법?

아래의 코드 조각을 감안할 때 :

  1. SQL 서버 예외를 검색하기위한 가장 좋은 방법은 있습니까?

  2. 레코드가 db.Single 호출의 결과인지 확인하는 가장 좋은 방법은 무엇입니까? 유효하지 않은 메시지 ID (예 : 데이터 집합에없는 메시지 ID)로 db.Single이 호출되면 예외가 발생합니다. 메시지 ID가 데이터베이스에 있으면 예외없이 호출이 반환됩니다. try catch 블록없이이 작업을 수행 할 수있는 방법이 있습니까? 호출이 try/catch 블록없이 경우

예외 :

경우 ArgumentNullException 값이 null 일 수 없습니다.
매개 변수 이름 : ENSMessageEntry : 'ID = 25'이 여기

을 존재하지 않는 내 코드입니다 :

public ENSStatusResponse GetMessageStatus(int messageID) 
{ 
    var statusResponse = new ENSStatusResponse(); 

    using (var db = DBConnectionFactory.OpenDbConnection()) 
    { 
     try 
     { 
      ENSMessageEntry mes = db.Single<ENSMessageEntry>("ID = " + messageID); 
      statusResponse.ENSMessageStatus = mes.Id; 
     } 
     catch 
     { 
      statusResponse.ENSMessageStatus = 0; 
     } 
    } 

    return statusResponse; 
} 

답변

4
  1. 내가 생각하지 않는 SQL 서버 예외를 생성 할이 쿼리 예외가있는 경우에는 결과가 0이고 throw되지 않을 것이라고 가정하는 .Single에서 발생합니다.

  2. 사용 Db.GetByIdOrDefault<ENSMessageEntry>(messageID)하고 응답

+0

정말 감사 널 (null)을 확인합니다. 1 위를위한 당신의 요점을 깨닫습니다. ORMlite 스택을 통해 SQLExceptions를 얻을 계획이 있는지 궁금합니다. # 2에 관해서 ... 내가 뭘 찾고 있었는지, 고마워. – overclocker

관련 문제