2012-06-18 20 views
6

Cuando se trata de usar Código EF En primer lugar, hay dos opciones para el control de cambios:seguimiento de cambios de discrepancia con el Código DbContext y EF Primera

el seguimiento de cambios basados ​​
  • Notificación
    1. instantánea basada en el seguimiento de cambios con apoderados

    Tenga en cuenta el siguiente código cuando se ejecuta con cada método de seguimiento de cambios. Asuma una instancia de DbContext con las opciones de configuración predeterminadas.

    var o = context.MySet.First(); 
    o.MyProperty = 42; 
    context.SaveChanges(); 
    

    Si la instancia de la entidad cargado y rastreado por el contexto en la primera línea ya tiene un valor de 42 para "MyProperty", entonces su estado en el cambio rastreador es diferente durante la llamada a "SaveChanges" en la tercera línea.

    1. Seguimiento de cambios basado en instantáneas - su estado es "Sin cambios".
    2. Seguimiento de cambios basado en notificaciones con Proxies: su estado es "Modificado".

    Teniendo en cuenta que en virtud de cambio basado notificación de seguimiento de una instrucción de actualización innecesaria serán enviados a la base de datos durante la llamada a "SaveChanges" preveo mayoría de los desarrolladores prefieren el comportamiento de la instantánea basado seguimiento de cambios.

    ¿Es intencional esta diferencia en el comportamiento?

    ¿Existe alguna forma de lograr el mismo comportamiento que el seguimiento de cambios basado en instantáneas cuando se usa el seguimiento de cambios basado en notificaciones con proxies?

    Nota que creo que esto está relacionado con esta característica sugerencia - http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1015363-better-change-tracking-for-poco-proxies

  • Respuesta

    6

    Este comportamiento es intentional. La razón es la compatibilidad de comportamiento hacia atrás con las antiguas entidades basadas en EntityObject que se comportaron de la misma manera: cuentan el cambio de propiedad al mismo valor que una modificación real. El artículo vinculado también muestra que la nueva recomendación es usar el seguimiento de cambios de instantáneas y seleccionar proxies de seguimiento de cambios solo si tiene un problema de rendimiento con el seguimiento de cambios de instantáneas.

    Cuestiones relacionadas