Ich habe ein Datenbank-Softdelete implementiert (ein boolesches Flag, das Einträge als gelöscht markiert) mit dem folgenden Tutorial: Ссылка
Es scheint mir eine sehr gute Implementierung zu sein, da nach dem Einrichten von soft delete auf ein Modell angewendet wird, indem einfach eine [SoftDelete("IsDeleted")]
Annotation hinzugefügt wird. Das Problem ist, dass es nicht funktioniert.
Die Quelle scheint zuverlässig zu sein, und sie haben sogar ein Beispiel ihrer Lösung veröffentlicht: Ссылка
Können Sie sich meinen Code ansehen, falls ich etwas falsch gemacht habe, als ich das weiche Löschen auf mein Projekt angewendet habe?
Das ist das Modell:
%Vor%ApplicationDbContext.cs:
%Vor%ApplicationDbConfiguration.cs
%Vor%SoftDeleteAttribute.cs:
%Vor%SoftDeleteInterceptor.cs
Ich habe festgestellt, dass SoftDeleteAttribute.GetSoftDeleteColumnName(deleteCommand.Target.VariableType.EdmType)
das Soft-Delete-Attribut nicht findet und null zurückgibt. Aber ich weiß nicht warum.
IdentityConfig.cs
%Vor%Es gibt einen Fehler in ApplicationDbContext.cs:
%Vor%Sie verwenden "new" anstelle von "override", damit OnModelCreating nie ausgeführt wird (versuchen Sie, einen Haltepunkt hinzuzufügen, um es zu überprüfen). So wird AttributeToTableAnnotationConvention niemals ausgeführt und Entitätsanmerkungen werden nie hinzugefügt.
Ändern zu
%Vor%wird es funktionieren lassen
Nun, Sie Code scheint mir gut. Vielleicht gibt es einen kleinen Fehler, der deine App kaputt macht. Du könntest das versuchen:
Entfernen Sie die SoftDeleteAttribute
von BC_Instance
Bearbeiten Sie die Methode OnModelCreating
Löschen Sie ApplicationDbConfiguration
class
Bearbeiten Sie den Konstruktor des Kontexts
%Vor%Hoffe, das hilft!
Tags und Links c# entity-framework database asp.net soft-delete