如何在 Dapper 中使用 Char 和 VarBinary?

viv*_*una 3 c# dapper dapper-extensions

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

SP:

ALTER PROCEDURE [dbo].[uspTest]      
 , @Param1   CHAR(1)        
 , @Param2   VARBINARY(MAX)=null
Run Code Online (Sandbox Code Playgroud)

C#:

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

编译错误:

DBType 不包含 char 和 varbinary 的定义

Zoh*_*led 5

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

枚举DbType不包含名为char或 的成员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);
Run Code Online (Sandbox Code Playgroud)