Estoy leyendo un resultado de una base de datos MS SQL 2008 con un tipo de columna de dbtype.time desde un lector de datos, usando C# con el marco DAAB 4.0.Cómo convertir el Datareader Resultado de DbType.Time al objeto Timespan?
Mi problema es que los documentos de MSDN dicen que dbtype.time debe asignarse a un intervalo de tiempo, pero el único constructor cercano para el intervalo de tiempo que veo acepta un largo, y el resultado devuelto por el lector de datos no se puede convertir a largo, ni directamente a un espacio de tiempo.
yo encontramos este Article whichs muestra datareader.getTimeSpan método(), pero no parece que la datareader en daab 4.0 para tener este método.
Entonces, ¿cómo convierto el resultado del lector de datos a un objeto de intervalo de tiempo?
Tanto la suya como la de Ken son buenas. Sin embargo, si el valor es nulo, el mensaje de excepción de la solución de Ken es más descriptivo. 'SqlNullValueException - Los datos son nulos. Este método o propiedad no puede invocarse en valores nulos' VS 'InvalidCastException - El molde especificado no es válido'. – TheWanderingMind
Para responder al comentario de BishopBarber si la columna puede ser anulada, conviene convertirla a TimeSpan. tipo anulable y comprobar null. 'TimeSpan? span = reader ["tsfield"] == DBNull.Value? (TimeSpan?) Null: (TimeSpan?) Reader ["tsfield"] ' –
Encontré esta solución mejor porque a menudo no accedo a mi lector de datos por índice. Sin embargo, tengo un método intermedio que comprueba nulo. – MichaelChan