Dapper是否支持枚举?

Ser*_*gey 8 c# orm dapper

我有一个类User,其中Role是枚举值:Employee,Admin等... Dapper抛出异常:"System.Enum类型的成员角色不能用作参数值"

dapper支持枚举吗?

    IDbConnection connection
connection.Execute(sb.ToString(), entityToInsert, /*transaction: transaction*/tx, commandTimeout: commandTimeout);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 8

支持枚举,但Enum不支持:p

所以如果你有:

class User {
    public MemberRole Role {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

那应该工作正常; 然而

class User {
    public Enum Role {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

将不会.你是否正在使用后者?

  • @Sergey具体:`MemberRole`类型的字段**本质上是一个`int` - 每个'User`有4个字节."Enum"类型的字段是`MemberRole`的盒装副本的*引用* - 对于引用(x86/x64)是4/8字节,加上对象头的8/16字节字节( x86/x64),加上`MemberRole`的4个字节,考虑到*最小对象大小*为12/24字节 - 突然而不是4字节你花了16/32字节(x86/64).除非使用反射,否则切勿使用"Enum".**和**你也为垃圾收集器做了不必要的工作! (3认同)