我正在使用ServiceStack.OrmLite和SQL Server提供程序。
鉴于下面的代码片段:
是否有检索SQL Server例外的最佳做法?
知道记录是否在db.Single调用的结果中的最佳方法是什么?当使用无效的消息ID(即不在数据集中的消息ID)调用db.Single时,我似乎得到了一个异常。如果数据库中存在消息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;
}
答案 0 :(得分:4)
我不认为这个查询会产生SQL Server异常,例外来自.Single
,假设会有结果并且如果没有则抛出。
使用Db.GetByIdOrDefault<ENSMessageEntry>(messageID)
并检查空