2012-04-24 16 views
13

Estoy trabajando en una aplicación web asp.net mvc 3 utilizando el enfoque de base de datos.Entity Framework mapea el tipo de datos float en doble

tengo una tabla llamada Results que contiene dos columnas (min & max) de tipo float, pero cuando se utiliza el marco de la entidad para mapear la base de datos existente en las clases del modelo, a continuación, EF crea una clase Results con el tipo de datos de la min & max campos como double en lugar de float como se especifica en la base de datos existente.

Entonces, ¿por qué ocurre este comportamiento? ¿Causará algún problema?

Respuesta

16

Esto es un comportamiento normal, según MSDN.

Incluso el tipo de datos real de SQL-server está mapeado a double, aunque float sería suficiente allí.

Pero los nombres de tipo son muy confusos aquí. De hecho, float (t-SQL) es lo mismo que double (.Net): una precisión de 15 dígitos y un rango de 1.79769313486232e308 negativo a 1.79769313486232e308 positivo.

1

No estoy seguro de si su problema es idéntica a ésta o no:

http://forums.asp.net/p/1606916/4100117.aspx

Pero no parece como este debería causar ningún problema. Podría perder precisión con sus números pasando de un doble a un flotador, pero aún debería funcionar a menos que necesite los dígitos adicionales.

+0

pero por qué perderé dígitos si cambio un doble para cargar ,, intenté insertar algo como 1.123456789 y se guardó correctamente en la base de datos ... –

+0

Puede perder precisión porque un flotador tiene una precisión de 7 , mientras que un doble tiene una precisión de 15-16. Es poco probable que necesites ese tipo de precisión a menos que estuvieras haciendo algún tipo de cálculo matemático donde fuera necesario. http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.100).aspx http://msdn.microsoft.com/en-us/library/678hzkk9(v=vs .100) .aspx Esos 2 enlaces son para los tipos de datos flotantes y dobles. –

Cuestiones relacionadas