San*_*.91 3 c# sql floating-point sqldatareader

我使用以下代码将数据从sql reader映射到C#Objects.在代码和sql数据库中,Power的数据类型为float .. y是否发生了强制转换错误消息?
private Entity.PanelDetail MapDataReader(SqlDataReader dataReader)
{
Entity.PanelDetail panelDetail = new Entity.PanelDetail();
panelDetail.IdPanelDetail = DataReaderExtensions.GetStringOrNull(dataReader, "idPanelDetail");
panelDetail.IdDeviceDetail = DataReaderExtensions.GetStringOrNull(dataReader, "idDeviceDetail");
panelDetail.Power = DataReaderExtensions.GetFloatOrNull(dataReader, "Power");
panelDetail.Current = DataReaderExtensions.GetFloatOrNull(dataReader, "Current");
panelDetail.Length = DataReaderExtensions.GetFloatOrNull(dataReader, "Length");
panelDetail.Width = DataReaderExtensions.GetFloatOrNull(dataReader, "Width");
panelDetail.CreatedBy = DataReaderExtensions.GetStringOrNull(dataReader, "CreatedBy");
panelDetail.CreationDate = DataReaderExtensions.GetDateTimeOrNull(dataReader, "CreationDate");
panelDetail.ModifiedBy = DataReaderExtensions.GetStringOrNull(dataReader, "ModifiedBy");
panelDetail.ModifiedDate = DataReaderExtensions.GetDateTimeOrNull(dataReader, "ModifiedDate");
panelDetail.IsActive = DataReaderExtensions.GetBoolOrNull(dataReader, "IsActive");
panelDetail.IsDeleted = DataReaderExtensions.GetBoolOrNull(dataReader, "IsDeleted");
return panelDetail;
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*eer 11
我猜这个值是以盒装double而不是以盒子形式返回的float.尝试使用
(float) dataReader.GetDouble(fieldOrdinal);
Run Code Online (Sandbox Code Playgroud)
请参阅映射CLR参数数据
我会很好地预测返回的数据类型实际上是(盒装)双倍.
更新:实际上我刚刚发现一个SQL float映射到MSDN上的.NET double(所以这是你的问题): http: //msdn.microsoft.com/en-us/library/ms131092.aspx
试试这个作为测试:
(float)dataReader.GetDouble(fieldOrdinal);