Uso primero el código de Entity Framework 4.1. ¿Existe una forma incorporada de obtener una lista de las propiedades que han cambiado desde que la entidad se cargó desde la base de datos? Sé que el código primero detecta que un objeto fue cambiado, pero ¿hay alguna forma de obtener exactamente qué propiedades han cambiado?EF 4.1 Primero el código: determinar qué propiedades han cambiado
Respuesta
Para las propiedades escalares y complejos que puede utilizar lo siguiente para extraer los nombres de las propiedades cambiadas de una entidad myEntity
:
var entry = context.Entry(myEntity);
var namesOfChangedProperties = entry.CurrentValues.PropertyNames
.Where(p => entry.Property(p).IsModified);
Algunas cosas a destacar aquí:
CurrentValues.PropertyNames
solamente contiene escalar y propiedades complejas, no propiedades de navegación.propiedades complejas significa: Sólo el nombre del complejo de la propiedad que se declara en la entidad, no las propiedades individuales reales del mismo tipo complejo, por ejemplo: Si usted tiene este modelo ...
[ComplexType] public class Address { public string Country { get; set; } public string City { get; set; } } public class Person { public int Id { get; set; } public string Name { get; set; } public Address Address { get; set; } }
... entonces, si
myEntity
es unaPerson
,CurrentValues.PropertyNames
contendría "Id", "Nombre " y "Dirección ", pero no "Address.Country" o "Address.City "(ni" País "o" Ciudad ").Si una propiedad complejo está marcado como modificado (
.IsModified
en el código anterior estrue
) entonces esto significa que, o bien la referencia (Person.Address
en el ejemplo anterior) ha cambiado, no importa si en realidad los valores de propiedad (Country
yCity
) dentro del tipo complejo han cambiado o no. O que cualquiera de las propiedades del tipo complejo ha cambiado (Country
oCity
ha cambiado). Creo que no es posible averiguar cuál, porque EF siempre envía un comando UPDATE para todas las propiedades de tipo complejo a la base de datos, incluso si solo una propiedad ha cambiado y la otra permaneció sin cambios. De esto concluiría que EF no realiza un seguimiento de los cambios de las propiedades de tipos complejos individuales.
- 1. EF 4.1 código primero agregando un desencadenador a una tabla
- 2. Tipo de datos XML en EF 4.1 Código Primero
- 3. Propiedades de solo lectura en EF 4.1
- 4. Multiplactiveresultsets en Entity Framework 4.1 Código Primero
- 5. Código EF Primero 4.1 - Cómo configurar una relación de uno a muchos con el valor predeterminado
- 6. Código de EF Primero - WithMany()
- 7. ¿Es redundante el patrón UnitOfWork y GenericRepository en el código EF 4.1 primero?
- 8. Eliminar en cascada Regla de EF 4.1 Código Primero cuando se utiliza Shared Key Primaria Asociación
- 9. NHibernate vs. EF 4.1+
- 10. Notificar que todas las propiedades han cambiado en ViewModel
- 11. Tablas EF Código Primero no generar
- 12. Fuerza EF 4.1 Código Primero para ver una entidad adjunta como Modificada
- 13. EF 4.1 RTM - EntityTypeConfiguration
- 14. Asignar TPT en código EF Primero 4.1 con claves primarias diferentes
- 15. EF 4.1, Código-Primero: Con ganas de carga de las colecciones en cascada
- 16. Cómo hacer conversión de tipo de propiedad en EF 4.1 Código Primero
- 17. código EF primero insertando muchas filas
- 18. Código EF Primero con muchas referencias autorreferenciales
- 19. Código Entity Framework Primero configure el esquema por entidad
- 20. Heredar una clase base común en el código EF primero
- 21. ¿Qué herramientas están disponibles para determinar qué ensamblados de .NET han cambiado desde la última compilación?
- 22. Entity Framework 4.1 Código Primero no crear tablas
- 23. EF 4.1 - Relaciones de modelo
- 24. Código EF Primero: ¿Dónde puedo encontrar el evento SavingChanges?
- 25. EF 4.1 Código primera clave externa agrega la columna extra
- 26. Cómo detener EF (código primero) Comprobación de cambios de esquema
- 27. EF 4.1 Código Primera Edición después de actualización
- 28. EF 4.1 estropeando las cosas. ¿Ha cambiado la estrategia de nombres FK?
- 29. ¿Qué determina SQL Azure Database Edition y el tamaño con el código EF primero?
- 30. Código EF Primero 4.3 DbContext ¿Ciclo de vida?
¡genial, también funciona para mí con Entity framework 6! –