¿Por qué no puedo desempaquetar un int como decimal?

Yo tengo unIDataRecord reader que estoy recuperando un decimal de la siguiente manera:

decimal d = (decimal)reader[0];

Por alguna razón, esto lanza una excepción de conversión no válida que dice que "la conversión especificada no es válida".

Cuando lo hagoreader[0].GetType() Me dice que es un int32. Por lo que sé, esto no debería ser un problema ...

He probado esto por este fragmento que funciona bien.

int i = 3750;
decimal d = (decimal)i;

Esto me ha dejado rascándome la cabeza preguntándome por qué no se puede desempaquetar el int contenido en el lector como un decimal.

¿Alguien sabe por qué esto podría estar ocurriendo? ¿Hay algo sutil que me falta?

Respuestas a la pregunta(4)

Su respuesta a la pregunta