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
Linda HamiltonOriginal
2025-01-02 21:22:38974Durchsuche

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);
}
  1. Definieren Sie in der OnModelCreating-Methode Ihres DbContext den Filter:
modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);

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);
    }
}

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

var user = dbContext.Users.FirstOrDefault(u => u.Id == 1);

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!

Stellungnahme:
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