我有这堂课:
public class PlaylistMessageBindingModel
{
//Other non-important fields
public Decimal Duration { get; set; }
}
我正在实例化此类的对象,并使用数据读取器从数据库中读取值:
while (innerReader.Read())
{
var playlistMsg = new PlaylistMessageBindingModel();
playlistMsg.Duration = (Decimal)reader["size_time"];
}
但是当它遇到.Duration
代码行时,会抛出异常:
An exception of type 'System.Exception' occurred in MyDll.dll but was not handled in user code
Additional information: size_time
数据库中的值列为decimal(6, 3)
。我猜它可能与数据库中出现的值为0.000这一事实有关,但如果是这种情况,我不知道如何处理。我很感激任何观察。
答案 0 :(得分:0)
你试过这个吗?
while (innerReader.Read())
{
var playlistMsg = new PlaylistMessageBindingModel();
playlistMsg.Duration = reader.GetDecimal["size_time"];
}
答案 1 :(得分:0)
当您长时间盯着自己的代码时会发生这种情况......
我没有注意到我的读者对象的细微差别。在这部分代码之上,我实例化了一个名为reader
的读者。在代码的下方,我实例化了innerReader
。因此,当我尝试设置持续时间时,我while (innerReader.Read())
并且在该代码块中我正在尝试playlistMsg.Duration = (Decimal)reader["size_time"];
但它应该是(Decimal)innerReader["size_time"]
。更改代码后,我得到了我想要的结果。