Cómo interceptar una consulta SELECT

entity-framework entity-framework-core

Pregunta

Estoy explorando Entity Framework 7 y me gustaría saber si hay una manera de interceptar una consulta "SELECCIONAR". Cada vez que se crea, actualiza o elimina una entidad, la sello con la fecha y hora actuales.

SELECT * 
FROM MyTable
WHERE DeletedOn IS NOT NULL

Me gustaría que todas mis consultas de SELECT excluyan los datos eliminados (consulte la cláusula WHERE anterior). ¿Hay alguna manera de hacerlo usando Entity Framework 7?

Respuesta popular

No estoy seguro de cómo es su infraestructura subyacente y si tiene alguna abstracción entre su aplicación y Entity Framework. Supongamos que está trabajando con DbSet<T> podría escribir un método de extensión para excluir los datos que se han eliminado.

        public class BaseEntity
        {
                public DateTime? DeletedOn { get; set; }
        }
        public static class EfExtensions
            {
                public static IQueryable<T> ExcludeDeleted<T>(this IDbSet<T> dbSet) 
                    where T : BaseEntity
                {
                    return dbSet.Where(e => e.DeletedOn == null);
                }
            }
      //Usage
      context.Set<BaseEntity>().ExcludeDeleted().Where(...additional where clause).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué