Dapper和Varbinary(最大)流参数

时间:2014-12-11 18:44:07

标签: c# sql-server-2012 dapper

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

果然,实际检查一条迹线我看到小巧的发送一个0x0。内存流有一个长度,所以我做错了什么,或者是不是支持这种情况? 我的查询字符串只是一个简单的插入,并返回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);
}

查询插入一行并返回时间戳,但实际上没有插入数据。我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

e.g。

_memorystream.Seek(0, SeekOrigin.Begin);