1

SQL Server プロバイダーで ServiceStack.OrmLite を使用しています。

以下のコードフラグメントを考えると:

  1. SQL Server 例外を取得するためのベスト プラクティスはありますか?

  2. レコードが db.Single 呼び出しの結果にあるかどうかを知る最良の方法は何ですか? db.Single が無効なメッセージ ID (つまり、データ セットにないメッセージ ID) で呼び出されると、例外が発生するようです。メッセージ 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 に答える 1

4
  1. このクエリが SQL Server 例外を生成するとは思いません。例外は、.Single結果があると想定し、ない場合はスローすることから発生しています。

  2. null の使用Db.GetByIdOrDefault<ENSMessageEntry>(messageID)とチェック

于 2013-01-07T22:24:03.100 に答える