编程语言
首页 > 编程语言> > c#-Dapper和Varbinary(max)流参数

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

作者:互联网

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

果不其然,实际上检查了一条轨迹,我发现小巧玲珑发送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);

标签:sql-server-2012,dapper,c
来源: https://codeday.me/bug/20191121/2048028.html