[英]why is this specified cast not valid??
我使用以下代碼將數據從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;
}
我會很好地預測返回的數據類型實際上是(盒裝)雙倍。
更新:實際上我剛剛發現一個SQL float映射到MSDN上的.NET double(所以這是你的問題): http : //msdn.microsoft.com/en-us/library/ms131092.aspx
試試這個作為測試:
(float)dataReader.GetDouble(fieldOrdinal);
原因是SQL Float在.net中是雙倍的。 您可以在此處查看完整的映射。 因此,正如其他人建議您需要讀取double然后嘗試將其轉換為float。
(float)dataReader.GetDouble("Power");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.