【问题标题】:Best practices for SQL Server exception handling in ServiceStack.OrmLite?ServiceStack.OrmLite 中 SQL Server 异常处理的最佳实践?
【发布时间】:2013-01-07 20:54:29
【问题描述】:

我将 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;
}

【问题讨论】:

    标签: servicestack ormlite-servicestack


    【解决方案1】:
    1. 我认为这个查询不会产生 SQL Server 异常,该异常来自.Single,它假设会有结果,如果没有则抛出。

    2. 使用Db.GetByIdOrDefault&lt;ENSMessageEntry&gt;(messageID) 并检查是否为空

    【讨论】:

    • 非常感谢您的回复。我意识到你的第一点 - 只是想知道是否有计划通过 ORMlite 堆栈获取 SQLExceptions。至于#2...这就是我一直在寻找的,谢谢
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2013-05-09
    • 2011-11-10
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多