使用new SqlParameter("@TRANSFER_TYPE", (int)TypeEnum.type1)。TypeEnum.type1的值为0。
查看msdn:
因为此重载接受 Object 类型的 value,所以当此值为零时,必须将整数值转换为 Object 类型,如下面的 C# 示例所示。
如果不执行该转换,则编译器将认为您尝试调用 SqlParameter(string、SqlDbType)构造函数重载。
这也就解释了,为什么定义后它的值总为null。正确应该为:
new SqlParameter("@TRANSFER_TYPE", Convert.ToInt32(TypeEnum.type1));