如何在 Dapper 中使用 Char 和 VarBinary?

How to use Char and VarBinary in Dapper?

我必须调用参数为charVarBinary(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 does not contain definition for char and varbinary

此问题与 Dapper 无关,您正在尝试访问根本不存在的枚举成员。

DbType 枚举不包含名为 charvarbinary 的成员。

使用AnsiStringFixedLength代替char,使用Binary.
代替varbinary 另外,至少在第一个参数中,您还应该包括大小:

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

你可以用这个;

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

你必须在 Enum 上使用变量类型,像这样;

public enum TestEnum : byte { // 值 }