Dapper DynamicParameter.Get을 사용하여 DBNull을 처리하는 방법

c# dapper sql-server

문제

var param = new DynamicParameters();
param.Add("MsgId", DbType.Int32, direction: ParameterDirection.Output);

connection.Execute(MessageSelOutMessageId, param, commandType: CommandType.StoredProcedure);
count = param.Get<int>("MsgId");

Dapper를 참조하여 위의 코드를 사용하여 출력 매개 변수 인 MsgId를 사용하여 저장 프로 시저를 호출했습니다. 잘 작동하지만 경우에 따라 저장 프로 시저에서 값이 반환되지 않고 반환 된 출력 매개 변수 값이 null이됩니다. 이 경우에는 예외가 있습니다.

DBNull을 null이 아닌 유형으로 변환하려고 시도했습니다! out / return 매개 변수는 데이터 스트림이 완료 될 때까지 (Query (..., buffered : false)의 'foreach'이후 또는 QueryMultiple에 대해 GridReader가 삭제 된 후에) 업데이트 된 값을 갖지 않습니다.

아래 코드를 사용하여이 오류를 피하기 위해 반환 값 데이터 형식을 nullable로 표시 할 수 있음을 이해했습니다.

count = param.Get<int?>("MsgId");

그러나, nullable 데이터 형식을 사용하는 대신 param.Get ( "MsgId") == null을 검사하는 다른 방법이 있습니까? int?

인기 답변

고맙습니다 Paulius, 동적 데이터 형식 count = param.Get<dynamic>("MsgId"); 그것은 내가 찾고있는 것처럼 작동합니다.



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