Dapper和mssql使用存储过程返回有意义的错误

时间:2013-12-11 11:52:50

标签: sql-server dapper

我有一个存储过程插入一行,有些条件返回结果集或单个错误代码但是当我使用dapper返回总是相同的返回类。所以我无法理解如果代码给我错误或消息而不是成功的结果集。

    public static List<Result> Results(int Id)
    {
        using (IDbConnection connection = BL.DataProvider.OpenConnection())
        {
            return connection.Query<Result>("SearchResultGet", new { Id = Id }, commandType: CommandType.StoredProcedure).ToList();
        }
    }

ALTER PROCEDURE SearchResultGet
@Id int
AS
IF(id != 0)
SELECT * FROM XX WHERE Id = Id
ELSE
SELECT -1

代码只是样本,没有任何意义。

1 个答案:

答案 0 :(得分:0)

没有ORM / micro-ORM API会像这样;对于一组案件有一个select -1只是......不愉快。选项:

  • 将sproc更改为 not not that - 只需运行返回零行的常规select
  • 将该逻辑添加到Results方法中(或者除了)sproc之外 - 即检查C#中的Id是否为零
  • 使用return -1而不是select -1(尽管请注意,dapper不会使捕获返回值变得微不足道)
  • 使用sql错误(raiserror