Comment intercepter une requête SELECT

entity-framework entity-framework-core

Question

J'explore Entity Framework 7 et j'aimerais savoir s'il existe un moyen d'intercepter une requête "SELECT". Chaque fois qu'une entité est créée, mise à jour ou supprimée, je lui attribue la date et l'heure actuelles.

SELECT * 
FROM MyTable
WHERE DeletedOn IS NOT NULL

Je souhaite que toutes mes requêtes SELECT excluent les données supprimées (voir la clause WHERE ci-dessus). Y at-il un moyen de faire cela en utilisant Entity Framework 7?

Réponse populaire

Je ne sais pas à quoi ressemble votre infrastructure sous-jacente et si vous avez une abstraction entre votre application et Entity Framework. Supposons que vous travaillez avec DbSet<T> vous pouvez écrire une méthode d'extension pour exclure les données supprimées.

        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).



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi