Saltar al contenido

Entity Framework DbContext SaveChanges () Valor original incorrecto

Te damos la bienvenida a nuestra página web, en este sitio vas a hallar la resolución que andabas buscando.

Solución:

Cuando EF recupera una entidad de la base de datos, toma una instantánea de los valores originales de todas las propiedades de esa entidad. Posteriormente, a medida que se realicen cambios en los valores de estas propiedades, los valores originales seguirán siendo los mismos mientras que los valores actuales cambian.

Sin embargo, para que esto suceda, EF debe realizar un seguimiento de la entidad durante todo el proceso. En una aplicación web u otra aplicación de n niveles, normalmente los valores se envían al cliente y se desecha el contexto utilizado para consultar la entidad. Esto significa que EF ya no realiza el seguimiento de la entidad. Esta es una buena y buena práctica.

Una vez que la aplicación vuelve a publicar, la entidad se reconstruye utilizando los valores del cliente y luego se vuelve a adjuntar al contexto y se establece en un Modificado estado. Sin embargo, por defecto, los únicos valores que regresan del cliente son los valores actuales. Los valores originales se pierden. Por lo general, esto no importa a menos que esté haciendo una concurrencia optimista o quiera tener mucho cuidado al actualizar solo los valores que realmente han cambiado. En estos casos, los valores originales también deben enviarse al cliente (generalmente como campos ocultos en una aplicación web) y luego volver a aplicarse como los valores originales como parte del proceso de adjuntar. Esto no sucedía en el ejemplo anterior y es por eso que los valores originales no se mostraban como se esperaba.

si cambias

dbEntry.OriginalValues.GetValue(propertyName);

para

dbEntry.GetDatabaseValues().GetValue(propertyName);

entonces eso funciona

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología