无法使用Dapper.NET将文件流插入SQL文件表

时间:2016-09-06 16:48:45

标签: c# sql ado.net dapper dapper-extensions

我在项目中使用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扩展插件?

1 个答案:

答案 0 :(得分:4)

您需要使用DynamicParameters类并指定参数的数据类型。 对于该示例,我创建了一个表TEST,其中包含一个名为Stream VARBINARY(MAX)

的列
readAsset(String fileName)