1

我将 ServiceStack.OrmLite 与 SQL Server 提供程序一起使用。

给定下面的代码片段:

  1. 是否有检索 SQL Server 异常的最佳实践?

  2. 知道一条记录是否在 db.Single 调用的结果中的最佳方法是什么?当使用无效的消息 ID(即不在数据集中的消息 ID)调用 db.Single 时,似乎出现异常。如果数据库中存在消息 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 回答 1

4
  1. 我认为这个查询不会生成 SQL Server 异常,异常来自.Single假设会有结果,如果没有则抛出。

  2. 使用Db.GetByIdOrDefault<ENSMessageEntry>(messageID)并检查 null

于 2013-01-07T22:24:03.100 回答