9

Primero uso EF Code con mi aplicación asp.net mvc. aquí es mi código:conversión de un tipo de datos datetime2 a un error de tipo de datos de fecha y hora con el código EF primero?

Request.RequestDate = DateTime.Now; 

del tipo de RequestDate es de fecha y hora en mi base de datos. y esto es error que se produjo cuando se utiliza el código anterior !:

La conversión de un tipo de datos datetime2 a un tipo de datos de fecha y hora resultó en un valor fuera de rango.

por favor ayúdame. Gracias.

+0

posible duplicado de la conversión [C# de un tipo de datos datetime2 a un tipo de datos datetime] (http://stackoverflow.com/questions/1331779/c-sharp-conversion-of-a-datetime2-data-type-to -a-datetime-data-type) – CodeCaster

+0

¿Está utilizando SQL 2005? El rango de datetime2 es desde 0001/01/01 hasta 9999/12/31, de ahí el error. Si es así, deberá editar el archivo XML edmx –

+0

@json jong: estoy usando sql server 2008 y no tengo ningún archivo .edmx porque utilizo Code first !. –

Respuesta

11

Editar:

How to fix the datetime2 out-of-range conversion error using DbContext and SetInitializer?

El problema es que usted está tratando de salvar a un valor que no puede caber en una columna de fecha y hora de SQL. la respuesta dada aquí detendrá la conversión de fallar.

o en su Base de datos, cambie las columnas a escribir datetime2. No sé exactamente por qué código primero está generando columnas de fecha y hora en lugar de datetime2

Aquí hay un ejemplo para asignar explícitamente sus columnas de fecha y hora a datetime2 en SQL

Using DateTime properties in Code-First Entity Framework and SQL Server

+0

Estoy usando Code First y no tengo ningún archivo .edmx. –

+0

Creo que lo que debe hacer es especificar que la columna es del tipo datetime. ¿Tu código primero generó la base de datos? tratando de almacenar un objeto datetime2 en una columna de fecha y hora –

+0

Sí, mi base de datos se generó correctamente con el código primero y esa columna es del tipo datetime. –

5

Por mi parte era porque el datetime no era anulable y en alguna situación el campo no se inicializó en el constructor. He resuelto esto fijando mi campo como anulable

public DateTime? MyDate { get; set; } 

Otra solución sería para inicializar el campo en el constructor no importa qué.

+0

Esto lo resolvió para mí. En la reflexión, el mensaje de error no es genial. Creé una columna DateTime, ¿por qué está tratando de convertirlo a otra cosa? ¿Por qué no solo decirme que se ha violado una restricción ... – sarin

Cuestiones relacionadas