在 SqlDataRecord 中将小数转换为浮点数时出错

Error in converting decimal to float in a SqlDataRecord

我有一个 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。我在上面的行中收到 Invalid Cast 异常。我也试过Convert.ToSingle,但得到了同样的错误。在这种情况下我可能做错了什么?

A SQL Float 是一个 .Net double according to SqlDbType documentation。如果您确实需要使用 .Net float,请使用 SQL Real 类型,否则,只需使用 SetDouble 并将您的 decimal 转换为 double.