2013-01-07 57 views
1

我正在使用ServiceStack.OrmLite與SQL Server提供程序。ServiceStack.OrmLite中的SQL Server異常處理的最佳做法?

考慮下面的代碼片段:

  1. 是否有用於檢索SQL服務器異常的最佳做法?

  2. 什麼是最好的方法來知道是否在db.Single調用的結果中記錄?當db.Single被一個無效的消息ID(即不在數據集中的消息ID)調用時,似乎我得到一個異常。如果消息ID存在於數據庫中,則調用無例外返回。有沒有辦法做到這一點沒有try catch塊?

異常,如果調用沒有try/catch塊製作:

ArgumentNullException值不能爲空。
參數名: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 Server異常,例外來自.Single,假設將會有結果並且如果沒有則拋出。

  2. 使用Db.GetByIdOrDefault<ENSMessageEntry>(messageID)和檢查空

+0

非常感謝您的回覆。我意識到你的觀點 - 只是想知道是否有計劃通過ORMlite堆棧獲取SQLExceptions。至於#2 ...這就是我正在尋找的,謝謝 – overclocker