在SqlDataRecord中将decimal转换为float时出错

时间:2017-10-26 07:10:31

标签: c# type-conversion .net-4.5

我有一个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 ,但是遇到了同样的错误。在这种情况下我可能做错了什么?

1 个答案:

答案 0 :(得分:2)

SQL Float是.Net double according to SqlDbType documentation。如果您确实需要使用.Net float,请使用SQL Real类型,否则,只需使用SetDouble并将decimal投射到double。< / p>

相关问题