c# - Dapper 和 Varbinary(max) 流参数

标签 c# sql-server-2012 dapper

我正在尝试将二进制 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/

相关文章:

c# - Dapper 返回单值

dapper - 为什么 Dapper 打开查询但不执行

c# - 无法确定类型的复合主键顺序

deployment - 在网络外部署 SSIS (SQL Server 2012) 项目

sql - 我需要删除小数点后的前导零

sql - UPDATE FROM 不适用于同一行的多次更新

c# - Dapper : BEGIN TRAN or TransactionScope? 哪个交易更好

c# - 无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型

c# - 如何使用 FK NHibernate 映射复合 PK

c# - Xamarin.Forms AdMob "Missing AdActivity"