Heim > Backend-Entwicklung > C++ > Wie kann Entity Framework Code zunächst Soft-Delete-Filterung implementieren?

Wie kann Entity Framework Code zunächst Soft-Delete-Filterung implementieren?

Linda Hamilton
Freigeben: 2025-01-02 21:22:38
Original
1003 Leute haben es durchsucht

How Can Entity Framework Code First Implement Soft Delete Filtering?

Soft-Delete-Filterung mit Entity Framework Code First

In Entity Framework Code First können Sie durch Soft-Deletion Entitäten „löschen“, indem Sie sie markieren als gelöscht, anstatt sie tatsächlich aus der Datenbank zu entfernen. Dies ist nützlich für Szenarien, in denen Sie ein versehentliches Löschen verhindern oder historische Daten beibehalten möchten.

Eine Herausforderung beim vorläufigen Löschen besteht darin, vorläufig gelöschte Entitäten beim Abrufen von Daten automatisch herauszufiltern. Dies kann mit dem EntityFramework.DynamicFilters-Paket erreicht werden.

EntityFramework.DynamicFilters

EntityFramework.DynamicFilters ist eine Bibliothek, die einen Mechanismus zum Erstellen globaler Filter bereitstellt, die automatisch angewendet werden auf Abfragen. Diese Filter können auf jede Eigenschaft einer Entität angewendet werden, einschließlich Navigationseigenschaften.

Um EntityFramework.DynamicFilters zu verwenden, müssen Sie:

  1. Das Paket von NuGet installieren.
  2. Fügen Sie die folgende Zeile zu Ihrem DbContext hinzu Klasse:
public override int SaveChanges(bool acceptAllChangesOnSuccess)
{
    // Soft delete implementation here
    return base.SaveChanges(acceptAllChangesOnSuccess);
}
Nach dem Login kopieren
  1. Definieren Sie in der OnModelCreating-Methode Ihres DbContext den Filter:
modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);
Nach dem Login kopieren

Dieser Filter stellt sicher, dass jede Abfrage an eine Entität implementiert wird Die ISoftDelete-Schnittstelle enthält automatisch eine WHERE-Klausel für die IsDeleted-Eigenschaft und schließt Entitäten aus, bei denen IsDeleted auf festgelegt ist wahr.

Beispiel

Bedenken Sie den folgenden Code:

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);
    }
}
Nach dem Login kopieren

Mit dieser Konfiguration ignoriert der folgende Code alle als gelöscht markierten Benutzer:

var user = dbContext.Users.FirstOrDefault(u => u.Id == 1);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann Entity Framework Code zunächst Soft-Delete-Filterung implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage