Dapper 和 Varbinary(max) 流参数

Mic*_*l B 4 c# dapper sql-server-2012

我正在尝试将二进制 blob 存储在数据库表中并从中获取输出。数据存储在一个MemoryStream对象中。我正在尝试使用异步查询将其保存到 sql server 2012 表中。调用成功,但没有数据插入到列中。(例如,当我查询它时,我得到一个 0x0 条目)。

果然,实际检查跟踪时,我看到 dapper 发送了 0x0。内存流有一个长度,所以我做错了什么或者 dapper 不支持这种情况吗?我的查询字符串只是一个简单的插入,并获取 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);
}
Run Code Online (Sandbox Code Playgroud)

该查询插入一行并获取时间戳,但实际上没有插入任何数据。我究竟做错了什么?

Dav*_*d C 5

确保您查找到内存流的开头。流具有位置状态。另一种方法是在尝试持久化内存流之前将其转换为 Byte[]。

例如

_memorystream.Seek(0, SeekOrigin.Begin);
Run Code Online (Sandbox Code Playgroud)