将0.0十进制值设置为c#十进制对象时抛出异常

时间:2015-12-12 01:55:01

标签: c# sql-server

我有这堂课:

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这一事实有关,但如果是这种情况,我不知道如何处理。我很感激任何观察。

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

while (innerReader.Read())
{
    var playlistMsg = new PlaylistMessageBindingModel();
    playlistMsg.Duration = reader.GetDecimal["size_time"];
}

同样非常有用SQL Server Data Type Mappings

答案 1 :(得分:0)

当您长时间盯着自己的代码时会发生这种情况......

我没有注意到我的读者对象的细微差别。在这部分代码之上,我实例化了一个名为reader的读者。在代码的下方,我实例化了innerReader。因此,当我尝试设置持续时间时,我while (innerReader.Read())并且在该代码块中我正在尝试playlistMsg.Duration = (Decimal)reader["size_time"];但它应该是(Decimal)innerReader["size_time"]。更改代码后,我得到了我想要的结果。