[英]Unable to insert file stream into SQL filetable using Dapper.NET
我在项目中使用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();
引发异常:mscorlib.dll中的“ System.NotSupportedException”
附加信息:类型System.IO.Stream的成员fileStream不能用作参数值
有没有人这样做或知道我可以使用的任何dapper扩展插件?
您需要使用DynamicParameters类并指定参数的数据类型。 对于该示例,我创建了一个表TEST以及一个名为Stream VARBINARY(MAX)的列
using (var connection = new SqlConnection(Properties.Settings.Default.connectionString))
{
connection.Open();
using (var fs = File.Open(Properties.Settings.Default.filePath, FileMode.Open))
{
var sql = "INSERT INTO TEST (Stream) VALUES (@fs)";
var dParams = new DynamicParameters();
dParams.Add("@fs", fs, DbType.Binary);
connection.Execute(sql, dParams);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.