2011-09-12 16 views
29

Estoy trabajando en la aplicación contiene un marcador de fecha y si establezco el tiempo en ese selector a un valor muy antiguo o en el futuro cuando intento guardar este valor en la base de datos, el servidor arroja esta excepción, ¿cuál es la causa de ¿eso?La conversión de un tipo de datos datetime2 a un tipo de datos datetime resultó en un fuera de rango?

La conversión de un tipo de datos datetime2 a un tipo de datos datetime resultó en un valor fuera de rango. La declaración ha finalizado.

Respuesta

61

DateTime tiene el rango: 1 Enero, 1753, a través de 31 de diciembre de 9999

DateTime2 tiene la gama: 0001-01-01 través 9999-12-31

Así si ingresa una fecha anterior a 1753, obtendrá este error cuando el campo en la tabla sea del tipo DateTime.

22

Entity Framework agregará la fecha predeterminada para el campo de valor {01/01/0001 00:00:00} y está fuera del rango de SQL Date Generation. Entonces, para que funcione, debemos pedirle a EF que no genere una fecha predeterminada, podemos hacer que sea nulable haciendo lo siguiente en el Modelo de esa clase.

En este caso, EntityFramework genera un valor predeterminado para el campo LastLoggedIn. Si este campo en el datebase puede tener valor nulo, implica que podemos hacer que sea anulable haciendo lo follwoing en el modelo

[Display(Name = "LastLoggedIn")] 
     public DateTime? LastLoggedIn { get; set; } 
2
Products prd = new Products();    
prd.CreatedDate = DateTime.Now; 

Puede añadir al menos por encima de

Cuestiones relacionadas