ServiceStack.OrmLite中SQL Server异常处理的最佳实践?

时间:2013-01-07 20:54:30

标签: servicestack ormlite-servicestack

我正在使用ServiceStack.OrmLite和SQL Server提供程序。

鉴于下面的代码片段:

  1. 是否有检索SQL Server例外的最佳做法?

  2. 知道记录是否在db.Single调用的结果中的最佳方法是什么?当使用无效的消息ID(即不在数据集中的消息ID)调用db.Single时,我似乎得到了一个异常。如果数据库中存在消息ID,则调用将无异常地返回。没有try catch块有没有办法做到这一点?

  3. 如果没有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;
    }
    

1 个答案:

答案 0 :(得分:4)

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

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