2011-07-21 22 views
11

Estoy consultando mi EDM usando Entity SQL y estoy perdiendo precisión de milisegundos en mis valores de DateTime. Por ejemplo, 2011/7/20 12: 55: 15.333 PM cambia a 2011/7/20 12: 55: 15,000 PM.Entity Framework pierde Sql DateTime precisión

He confirmado que en SQL los milisegundos se registran con precisión.

Hay un atributo de precisión puedo aplicar en el archivo XML .edmx, pero no sé qué tipo de valores que se necesita,

 <Property Name="Timestamp" 
       Type="DateTime" 
       Nullable="false" 
       Precision="???" /> 

¿Alguien sabe cómo utilizar este atributo de precisión?

Gracias.

Respuesta

8

Depende de la versión de SQL Server ... ver http://seesharper.wordpress.com/2008/07/08/sql-server-datetime-vs-net-datetime-battle-of-accuracy/

Si se trata de un cambio de SQL Server 2008, el tipo de datos en el PP a datetime2 y luego actualizar el modelo de la BD.

De lo contrario, podría establecer Precisión en 3 (3 dígitos para la parte fraccionaria, consulte http://msdn.microsoft.com/en-us/library/cc716737.aspx).

+0

Es SQL Server 2008 Express (R2). Pero no puedo cambiar la base de datos porque no pertenece a mi proyecto. ¿Es esa la única solución? –

+0

puedes poner 3 en "Precisión" ... ¡pero editar .edmx es una mala práctica! – Yahia

+0

Ok, gracias. La precisión "3" funciona, aunque tuve que cambiar para usar la función .GetDateTime (int ordinal) fuera de EntityDataReader. –