Dapper 및 Varbinary (최대) 스트림 매개 변수

c# dapper sql-server-2012

문제

데이터베이스 테이블에 바이너리 BLOB를 저장하고 출력을 다시 얻으려고합니다. 데이터는 MemoryStream 객체에 저장됩니다. 이 쿼리를 비동기 쿼리를 사용하여 SQL Server 2012 테이블에 저장하려고합니다. 호출은 성공하지만 컬럼에 데이터가 삽입되지 않습니다. (예를 들어 내가 다시 쿼리 할 때 0x0 항목을 얻는다.)

물론, 실제로 추적을 확인하면 dapper가 0x0을 보내는 것을 볼 수 있습니다. memorystream의 길이가 너무 길어서이 시나리오를 지원하지 않습니까? 내 쿼리 문자열은 단순한 삽입이며 id와 삽입 시간을 되 돌린다.

다음 호출을 사용하고 있습니다.

using(var conn=new SqlConnection(_connstr)){

var dynParams = new DynamicParameters();
dynParams.Add("BinaryBlob",
_memoryStream,DbType.Binary,ParameterDirection.Input,-1);
var res = await conn.QueryAsync<MyResultType>(_queryStr, dynParams);
}

쿼리는 행을 삽입하고 타임 스탬프를 다시 가져 오지만 실제로 데이터는 삽입되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

수락 된 답변

메모리 스트림의 시작 부분을 찾으십시오. 스트림에는 위치 상태가 있습니다. 또 다른 방법은 메모리 스트림을 지속시키기 전에 Byte []로 변환하는 것입니다.

_memorystream.Seek(0, SeekOrigin.Begin);


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.