- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
除其他外,存储过程返回 varbinary(max) 作为 OUTPUT。我无法理解如何使用 Dapper 访问此信息。
下面是一些说明问题的简化示例代码。我向 StoredProcedure 提供了一些参数,我希望得到一张照片,该照片在 SQL Server 上存储为 varbinary(max)。
varbinary 没有 DbType。我尝试使用 DbType.Binary 但这会导致 Dapper 出现异常。如果我去掉照片参数,我希望恢复的所有其他参数(为了简洁起见从样本中删除)都在起作用。所以唯一的问题是检索 varbinary 数据。
实现这一目标的正确方法是什么?
using (var connection = new System.Data.SqlClient.SqlConnection(HelperClassesBJH.HelperMethods.ConString("ProductionLocal")))
{
connection.Open();
DynamicParameters p = new DynamicParameters();
p.Add("@OpID", id, DbType.Int32, ParameterDirection.Input);
p.Add("@StageID", Properties.Settings.Default.StageID, DbType.Int32, ParameterDirection.Input);
p.Add("@Photo", dbType: DbType.Binary, direction: ParameterDirection.Output);
try
{
connection.Execute(sql, p, commandType: CommandType.StoredProcedure);
op.Photo = p.Get<byte[]>("@Photo");
}
catch {}
}
DynamicParameters p = new DynamicParameters();
MemoryStream b = new MemoryStream();
p.Add("@OpID", id, DbType.Int32, ParameterDirection.Input);
p.Add("@StageID", Properties.Settings.Default.StageID, DbType.Int32, ParameterDirection.Input);
p.Add("@Photo", b, DbType.Binary, direction: ParameterDirection.Output);
try
{
connection.Execute(sql, p, commandType: CommandType.StoredProcedure);
op.Photo = p.Get<byte[]>("@Photo");
}
catch {}
最佳答案
你可以试试:
p.Add("@Photo", dbType: DbType.Binary, direction: ParameterDirection.Output, size: -1);
varchar(max)
和
nvarchar(max)
被映射(除了分别为
DbType.AnsiString
和
DbType.String
),所以它会是一致的。
关于dapper - 对于 varbinary 数据类型,DynamicParameters (Dapper) 的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557416/
我目前使用的是最新版本的 dapper,版本 1.50.0-beta9。我为 Oracle 使用的提供程序是 Oracle.ManagedDataAccess,版本 12.1.2400。使用 dapp
我知道我可以使用 ParameterDirection使用 Dapper.DynamicParameters: var parameters = new DynamicParameters(); pa
我想我遗漏了什么,或者我正在做一些愚蠢的事情,但我无法理解。假设有以下两个类: public class A { public A(string a, string b) {
这个有效: var list = conn.Query( "select Id from Person where Id in @ids", new { ids = new int[] { 1
我在 foreach 中调用存储过程循环并希望在每次迭代时更改其中一个参数的值。目前,似乎没有任何方法可以在将参数添加到 DynamicParameters 后访问这些参数,尽管通过阅读源代码,我可以
我正在尝试运行测试以查看是否正确加载了 DynamicParameters 对象。但是,我无法弄清楚我应该使用什么类型。当我尝试使用 C#/.NET 类型(int、string 等)时出现异常。我尝试
我目前正在使用的系统使用存储过程进行所有数据访问。我目前正在研究 Dapper(到目前为止它看起来很棒)但我想知道我是否可以使用使用模板创建的 DynamicParameters 对象,但将其中一个参
我在我的 Web-API 项目 (.NET Core 3.1) 中使用 Dapper,我正在尝试将记录插入数据库 (SQL Server 2017) + 返回创建的 ID。 我有这个对象... pub
除其他外,存储过程返回 varbinary(max) 作为 OUTPUT。我无法理解如何使用 Dapper 访问此信息。 下面是一些说明问题的简化示例代码。我向 StoredProcedure 提供了
var param = new DynamicParameters(); param.Add("MsgId", DbType.Int32, direction: ParameterDirection.
我正在尝试从表中获取所有记录,其中某个字段不是空字符串或 null。由于我构建查询的方式,ISNULL 和 COALESCE 不是此处的选项。更改数据库的模式也不是一种选择。 这是我正在运行以尝试检索
我是一名优秀的程序员,十分优秀!