Dans le domaine de la persistance des données, il est courant de mettre en œuvre une suppression logicielle, permettant de « supprimer » des enregistrements sans réellement étant supprimé de la base de données. Avec Entity Framework (EF), pour y parvenir, il faut personnaliser la méthode SaveChanges dans DbContext.
Pour répondre à la question du filtrage des entités supprimées de manière logicielle lors de la récupération de données, nous pouvons exploiter une puissante bibliothèque appelée EntityFramework.DynamicFilters.
EntityFramework.DynamicFilters permet la création de filtres globaux qui sont automatiquement appliqués lors de l'exécution de requêtes, y compris sur les propriétés de navigation. Pour implémenter le filtrage des entités supprimées de manière réversible, procédez comme suit :
modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);
Ce filtre injectera une clause WHERE dans toute requête ciblant les entités qui implémentent l’interface ISoftDelete et vérifie si IsDeleted est vrai. En définissant le paramètre filterEnabled sur false, le filtre ne sera appliqué qu'aux opérations de récupération.
Lors de l'exécution d'une requête sur un type d'entité marqué avec l'interface ISoftDelete, EntityFramework.DynamicFilters va automatiquement filtrer toutes les entités où IsDeleted est vrai. Cela vous permet de récupérer des données sans spécifier manuellement de critères de filtrage supplémentaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!