Maison > développement back-end > C++ > Comment le code Entity Framework peut-il d'abord implémenter le filtrage par suppression logicielle ?

Comment le code Entity Framework peut-il d'abord implémenter le filtrage par suppression logicielle ?

Linda Hamilton
Libérer: 2025-01-02 21:22:38
original
972 Les gens l'ont consulté

How Can Entity Framework Code First Implement Soft Delete Filtering?

Filtrage par suppression logicielle avec Entity Framework Code First

Dans Entity Framework Code First, la suppression logicielle vous permet de "supprimer" des entités en les marquant comme supprimés plutôt que de les supprimer réellement de la base de données. Ceci est utile dans les scénarios dans lesquels vous souhaitez empêcher une suppression accidentelle ou conserver des données historiques.

L'un des défis de la suppression logicielle consiste à filtrer automatiquement les entités supprimées de manière logicielle lors de la récupération des données. Ceci peut être réalisé à l'aide du package EntityFramework.DynamicFilters.

EntityFramework.DynamicFilters

EntityFramework.DynamicFilters est une bibliothèque qui fournit un mécanisme pour créer des filtres globaux qui sont automatiquement appliqués. aux requêtes. Ces filtres peuvent être appliqués à n'importe quelle propriété d'une entité, y compris les propriétés de navigation.

Pour utiliser EntityFramework.DynamicFilters, vous devez :

  1. Installer le package à partir de NuGet.
  2. Ajoutez la ligne suivante à votre DbContext class:
public override int SaveChanges(bool acceptAllChangesOnSuccess)
{
    // Soft delete implementation here
    return base.SaveChanges(acceptAllChangesOnSuccess);
}
Copier après la connexion
  1. Dans la méthode OnModelCreating de votre DbContext, définissez le filtre :
modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);
Copier après la connexion

Ce filtre garantit que toute requête sur une entité implémentant le L'interface ISoftDelete inclura automatiquement une clause WHERE pour la propriété IsDeleted, excluant les entités pour lesquelles IsDeleted est défini sur vrai.

Exemple

Considérez le code suivant :

public class User : ISoftDelete
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsDeleted { get; set; }
}

public class DbContext : base.DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Filter("IsDeleted", (User u) => u.IsDeleted, false);
    }
}
Copier après la connexion

Avec cette configuration, le code suivant ignorera tous les utilisateurs marqués comme supprimés :

var user = dbContext.Users.FirstOrDefault(u => u.Id == 1);
Copier après la connexion

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