의미있는 오류를 반환하는 저장 프로 시저를 사용하는 Dapper 및 mssql

dapper sql-server

문제

저장 프로 시저에 행을 삽입하고 일부 조건이 결과 집합 또는 단일 오류 코드를 반환하지만 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

코드는 단지 샘플이며 의미가 없습니다.

전문가 답변

ORM / micro-ORM API는 없습니다. 한 세트의 사례에 대해 select -1 을 갖는 것은 단지 즐겁지 않습니다. 옵션 :

  • sproc을 변경 하지 마라. 그냥 0 행을 리턴하는 regular select 를 실행한다.
  • sproc 대신에 (또는 그에 추가하여) Results 메소드에 로직을 추가하십시오. 즉, C #에서 Id 가 0인지 확인하십시오.
  • select -1 return -1 보다는 return -1 사용 select -1 (단, dapper가 반환 값을 캡처하는 것은 간단하지 않음)
  • SQL 오류 사용 ( raiserror )


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow