我在项目中使用Dapper.NET作为ORM层。我正在尝试编写WebApis以进行文件上载和下载。但是我无法让它工作。我已经搜索过足够的寻求帮助,但我找不到任何帮助。
如果我只是使用ADO.NET,我可以使用类型为VarBinary的SqlParameter作为文件流。但是Dapper.NET查询参数只是动态对象。因此,以下代码无法将记录插入文件表。
var fileStream = await Request.Content.ReadAsStreamAsync();
var streamId = Guid.NewGuid();
var fileName = streamId.ToString();
var sql = @"Insert into Attachments(stream_id, file_stream, name)
Values(@streamId, @fileStream, @fileName)";
using (var db = new SqlConnection(AppConfig.ConnectionString))
{
await db.ExecuteAsync(sql, new { streamId, fileStream, fileName);
}
fileStream.Close();
抛出异常:' System.NotSupportedException'在mscorlib.dll中
附加信息:System.IO.Stream类型的成员fileStream 不能用作参数值
有没有人这样做或者知道我可以使用的任何dapper扩展插件?
答案 0 :(得分:4)
您需要使用DynamicParameters类并指定参数的数据类型。 对于该示例,我创建了一个表TEST,其中包含一个名为Stream VARBINARY(MAX)
的列readAsset(String fileName)