2010-10-30 20 views
5

Tengo una aplicación MVC que utiliza Entity Framework y una base de datos SQL Server 2008. Usé el asistente EF para generar mi modelo de datos.datetime2 y ProviderManifestToken en Entity Framework

Tengo una tabla de SQL Server con una columna estándar DateTime. El modelo EF está usando System.DateTime.

Pero cuando trato de insertar un nuevo registro en esta tabla de mi solicitud, sin especificar un valor para esta columna DateTime, me sale el error:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

busqué en Google un poco y encontré que la gente está editando el edmx y cambiando el ProviderManifestToken. Ovitablemente, eso se sobrescribirá, ¿hay alguna solución o solución más permanente para arreglar esto?

Respuesta

3

El problema se debe a que, como usted ha dicho, no se está configurando cualquier valor para esa propiedad DateTime en la entidad que hace que por defecto a '0001-01-01', que está definitivamente fuera de rango para datetime columna en SQL Server. El rango de fechas del tipo de fecha y hora es desde el 1 de enero de 1753 hasta el 31 de diciembre de 9999.

Para solucionar esto, debe asignar un valor dentro del rango a esa propiedad antes de enviarlo a SQL Server, o cambie su tipo de columna DB a datetime2 que tiene un rango de fechas de 0001-01-01 a 9999- 12-31.

+0

Si no establezco explícitamente un valor para una propiedad de entidad, ¿no debería EF insertar un nulo? – Blackcoil

+1

No, se establecerá en el valor predeterminado (DateTime) en .Net. Tenga en cuenta que DateTime es un * Value Type * y no puede ser nulo, sin embargo DateTime? poder. Hay varias maneras en EF de que puede completar automáticamente esta propiedad (y básicamente cualquier propiedad de una entidad) en función de su uso. –