我有一个SqlMetaData数组定义为:
SqlMetaData[] _TvpSchema = new SqlMetaData[]{
new SqlMetaData("Duration", SqlDbType.Float)
};
和SqlDataRecord一样:
SqlDataRecord _DataRecord = new SqlDataRecord(_TvpSchema);
将此记录填写为:
_DataRecord.SetFloat(4, (float)obj.Duration);
其中obj.Duration为十进制类型,其值为 0 。我在上面一行得到无效投射的例外情况。我也尝试了 Convert.Toingle ,但是遇到了同样的错误。在这种情况下我可能做错了什么?
答案 0 :(得分:2)
SQL Float
是.Net double
according to SqlDbType
documentation。如果您确实需要使用.Net float
,请使用SQL Real
类型,否则,只需使用SetDouble
并将decimal
投射到double
。< / p>