2013-12-11 28 views
0

我有一個存儲過程插入一行,並且一些條件返回結果集或單個錯誤代碼,但是當我使用dapper時總是返回相同的返回類。所以我不明白如果代碼給我錯誤或消息,而不是成功的結果集。Dapper和mssql使用存儲過程返回有意義的錯誤

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 

代碼只是樣本,沒有任何意義。

回答

0

沒有ORM/micro-ORM API會這樣;對於一組案件有一個select -1只是...不愉快。選項:

  • 變化的存儲過程來這樣做 - 只需運行規律select返回零行
  • 邏輯添加到Results方法來代替(或補充)的存儲過程 - 即檢查是否Id是在C#
  • 零使用return -1而非select -1(但請注意短小精悍不使瑣碎捕捉返回值)
  • 使用SQL錯誤(raiserror