3

我必须调用参数为char和的存储过程VarBinary(MAX)。我需要使用 Dapper 从 C# 代码调用这个存储过程。但我找不到 dapper 支持的任何参数。

SP:

ALTER PROCEDURE [dbo].[uspTest]      
 , @Param1   CHAR(1)        
 , @Param2   VARBINARY(MAX)=null

C#:

DynamicParameters parameter = new DynamicParameters();
parameter.Add("@Param1", email.SenderType, DbType.char, ParameterDirection.Input);
parameter.Add("@Param2", email.AttachedFileStream, DbType.varbinary, ParameterDirection.Input);

编译错误:

DBType 不包含 char 和 varbinary 的定义

4

2 回答 2

3

这个问题与 Dapper 没有任何关系,您正在尝试访问根本不存在的枚举成员。

DbType枚举不包含名为charor的成员varbinary

而不是char使用AnsiStringFixedLength,而不是varbinary使用Binary
此外,至少在第一个参数中,您还应该包括大小:

DynamicParameters parameter = new DynamicParameters();
parameter.Add("@Param1", email.SenderType, DbType.AnsiStringFixedLength, ParameterDirection.Input, 1);
parameter.Add("@Param2", email.AttachedFileStream, DbType.Binary, ParameterDirection.Input);
于 2020-05-12T07:46:47.603 回答
0

你可以用这个;

db.Execute("Sql Query", new Dapper.DynamicParameters(new Dictionary<string, object>() { { "ColumnName", "ValueObject" } }));

您必须在 Enum 上使用变量类型,如下所示;

公共枚举 TestEnum : byte { // 值 }

于 2020-05-12T08:03:12.140 回答