调用SqlDataReader.GetTimeSpan()或.GetDateTime()时出现无效的Cast异常

时间:2015-05-13 09:19:44

标签: c# asp.net sqldatareader

我的ASP.NET MVC应用程序中有一点问题。 在我的类Repository.cs中,我调用了StoredProcedure,它给了我类似的东西:

###############################################################
| JOB  | STATUS | DATE       | START    | END      | DURATION |
###############################################################
| ABCD | ok     | 05.05.2015 | 10:15:12 | 10:16:00 | 00:00:48 |
. 
.
.

我的 Repository.cs 类代码看起来像那样(rdr是一个SqlDataReader):

while (rdr.Read())
{
    var jobNameId = rdr.GetOrdinal("JOB");
    var statusId = rdr.GetOrdinal("STATUS");
    var appointmentId = rdr.GetOrdinal("DATE");
    var startId = rdr.GetOrdinal("START");
    var endId = rdr.GetOrdinal("END");
    var durationId = rdr.GetOrdinal("DURATION");

    result.Add(new Job()
    {
        JobName = rdr.GetString(jobNameId),
        Status = (JobStatus)Enum.Parse(typeof(JobStatus), rdr.GetString(statusId)),
        // rdr.GetDateTime() and rdr.GetTimeSpan() is throwing InvalidCastException
        Appointment = rdr.GetDateTime(appointmentId),
        Start = rdr.GetTimeSpan(startId),
        End = rdr.GetTimeSpan(endId),
        Duration = rdr.GetTimeSpan(durationId)
    });
}

我的 Job.cs 类看起来像这样:

public class Job
{
    public string JobName { get; set; }

    public JobStatus Status { get; set; }

    public DateTime Appointment { get; set; }

    public TimeSpan Start { get; set; }

    public TimeSpan End { get; set; }

    public TimeSpan Duration { get; set; }

}

当我的读者(rdr)试图呼叫rdr.GetDateTime(appointmentId)以及呼叫rdr.GetTimeSpan(startId|endId|durationId)

时,会抛出异常

我知道我可以用Convert.ToDateTime(rdr.GetString(appointmentId))来做,但我不想这样做,因为这对我没有意义。

你们有没有想法如何获得我的DateTime / TimeSpan,而没有明确地将其转换为DateTime / TimeSpan?

0 个答案:

没有答案