我正在尝试将二进制 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);
}
查询插入一行并返回一个时间戳,但实际上没有插入任何数据。我做错了什么?
最佳答案
确保您查找到内存流的开头。流具有位置状态。另一种方法是在尝试持久化之前将内存流转换为 Byte[]。
例如
_memorystream.Seek(0, SeekOrigin.Begin);
关于c# - Dapper 和 Varbinary(max) 流参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27430151/