Maison > développement back-end > C++ > Comment puis-je filtrer automatiquement les entités supprimées de manière logicielle dans Entity Framework ?

Comment puis-je filtrer automatiquement les entités supprimées de manière logicielle dans Entity Framework ?

Linda Hamilton
Libérer: 2024-12-31 07:25:10
original
617 Les gens l'ont consulté

How Can I Automatically Filter Out Soft-Deleted Entities in Entity Framework?

Filtrage automatique des entités supprimées de manière logicielle dans Entity Framework

Lorsque vous travaillez avec Entity Framework Code First, la « suppression logicielle » est une pratique courante qui permet aux entités d'être marquées comme supprimées sans les supprimer réellement de la base de données. Cette approche conserve les données historiques tout en excluant logiquement les entités inactives des requêtes.

Pour réaliser une suppression logicielle, une logique personnalisée peut être implémentée dans la méthode SaveChanges de DbContext, comme démontré dans la question. Cela garantit que les entités implémentent l'interface ISoftDelete et disposent de la méthode "Delete" pour les marquer comme supprimées.

Automatisation de la récupération des entités supprimées de manière logicielle

Cependant, la question plus loin demande comment ignorer automatiquement les entités supprimées de manière logicielle lors de la récupération des données. La solution réside dans l'utilisation de Entity Framework Dynamic Filters, une bibliothèque qui offre un moyen élégant de créer des filtres globaux qui seront appliqués automatiquement à toutes les requêtes pertinentes.

Implémentation d'EntityFramework.DynamicFilters

Pour implémenter cette fonctionnalité, suivez ces étapes :

  1. Installez le Package EntityFramework.DynamicFilters de NuGet.
  2. Remplacez la méthode OnModelCreating dans la classe DbContext et appelez la méthode Filter.
  3. Spécifiez le nom du filtre, une expression lambda représentant la condition du filtre et un indicateur indiquant si le filtre est activé par défaut.

Par exemple, pour un Filtre "IsDeleted":

modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);
Copier après la connexion

Utilisation

Une fois le filtre défini, toutes les requêtes sur les entités implémentant l'interface ISoftDelete incluront automatiquement la clause Where "where IsDeleted = faux". Cela garantit que les entités supprimées de manière transparente sont exclues des ensembles de résultats sans aucun code supplémentaire.

Remarque

La méthode Filter fournie par EntityFramework.DynamicFilters prend en charge les conditions de filtre complexes et peut également être appliqué aux propriétés de navigation. En utilisant cette bibliothèque, les développeurs peuvent simplifier la récupération des données tout en conservant la flexibilité de la suppression logicielle.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal