Código de Entity Framework Primero truncando mis decimales

Estoy usando Entity Framework 6.x usando el enfoque Code First en una aplicación MVC 5. En esta situación particular, mi modelo (entre otras cosas) contiene dos propiedades llamadas Latitud y Longitud:

[Required, Range(-90, +90)]
public decimal Latitude { get; set; }

[Required, Range(-180, +180)]
public decimal Longitude { get; set; }

Y cuando realicé la migración, obtuve algo como esto

CreateTable("ResProperty"), c => new {
        :
    Latitude = c.Decimal(nullable: false, precision: 10, scale: 8),
    Longitude = c.Decimal(nullable: false, precision: 11, scale: 8),
        :
})
... other stuff

así que tanto la latitud como la longitud tienen 8decimal dígitos El primero con 2 números enteros (máximo 90) y el último con 3 números enteros (máximo 180).

Después de ejecutar el comando Actualizar-Base de datos, las columnas de mi tabla se muestran como:

Latitude decimal(10,8)
Longitude decimal(11,8)

eso me parece bien Ahora, en mi opinión, tengo un mapa y un código Javascript que permite al usuario reposicionar el marcador. Eso también funciona bien. Cuando el marcador se reposiciona, los campos Latitud y Longitud se rellenan con el valor actualizado que (Javascript) tiene más de 12 dígitos decimales. Eso no importa AFAIK porque mi escala es de 8 decimales.

Después de presionar el botón Enviar y de invocar el método Crear o Editar POST, examino la instancia del modelo y confirmo que los valores reales pasados en el modelo al controlador son correctos, tienen dígitos decimales más que suficientes (aquellos que codifican Javascript sitio). Entonces el valor es correcto.

Ahora ... el problema es que después de que se realiza db.SaveChanges (), la base de datos se actualiza, y he confirmado que se ha realizado una escritura / actualización real, pero de alguna manera internamente el EF ignora mis valores reales y escribe latitud / longitud truncada redondeado a SOLO DOS dígitos decimales, por lo que mi Latitud se muestra en el DB como 09.500000000 todos los demás dígitos decimales se ponen a cero porque parece haber tenido lugar un redondeo.

// Prior to SaveChanges()
Latitude = 9.08521879
Longitude = -79.51658792
// After SaveChanges()
Latitude = 9.08000000
Longitude = -79.51000000

¿Por qué lo está redondeando si le he dado la escala y precisión correctas y la columna también tiene la escala y precisión correctas? ¿Por qué SaveChanges está alterando mis valores?

Encontré esta publicación (http://weiding331.blogspot.com/2014/01/entity-framework-decimal-value.html), que es el mismo problema, pero no sé cómo puedo solucionarlo (si lo hace) porque ya he realizado varias migraciones y adiciones de datos después de que la tabla en cuestión fue "migrada".

Resumiendo

El tipo de datos del modelo es correcto (decimal)El código de migración de la base de datos tiene la preción / escala correcta (lat 10/8 lon 11/8)Las columnas de la base de datos SQL tienen la precisión / escala correcta (lat 10/8, long 11/8)Los valores pasados en el modelo tienen al menos 8 dígitos decimales para latitud y longitudla escritura / actualización real del valor tiene lugar en la base de datos sin error, pero ...Los valores registrados en la base de datos para estas dos columnas se truncan a DOS dígitos decimales y muestran los otros dígitos decimales menos significativos como cero (0)

Respuestas a la pregunta(1)

Su respuesta a la pregunta