2016-06-09 6 views
0

Wir verwenden Microsoft.AspNet.Identity v1.0.0.0 in unserem Projekt.Wir müssen unsere Anwendung Benutzer sanft löschen (nur machen sie IsDeleted = True) nicht permanent aus der Datenbank. Alles funktioniert damit, aber wenn wir einen neuen Benutzer mit demselben Benutzernamen erstellen wollen, prüft er auch den IsDeleted. Wir wollen in diesem Fall den IsDeleted-Benutzer nicht überprüfen.So verwenden Sie ApplicationUser soft delete mit IsDelete -Eigenschaft in Microsoft.AspNet.Identity

Gibt es eine Möglichkeit, die öffentliche virtuelle CreateAsync-Funktion für dieses Szenario zu überschreiben?

Ihre Hilfe wird mir sehr hilfreich sein. Danke in Erweiterte Ashish

+0

Benutzername ist ein eindeutiger Index für die Tabelle in SQL. Wenn Sie CreateAsync ändern, um es nicht zu validieren, erhalten Sie DbUpdateException – tmg

+0

@tmg Sind Sie sicher? In Identity v2 gibt es keinen eindeutigen Index und die Eindeutigkeit des Benutzernamens wird im Code erzwungen. – trailmax

Antwort

0

Wenn Sie den Benutzernamen für andere freigeben möchten, können Sie einfach ändern, wenn der Benutzer gelöscht wird.

Machen Sie es etwas einzigartiges, vielleicht: "{user}_deleted_{guid}". Die E-Mail-Adresse des Benutzers ist weiterhin intakt, und Sie können mehrere Benutzereinträge mit derselben E-Mail-Adresse haben, so dass dies kein Problem darstellt.

Es könnte auch gut sein, eine DeletedDate Eigenschaft anstelle einer IsDeleted Eigenschaft zu speichern. Es ist funktional gleichwertig (nur prüfen, ob es nicht null ist), aber es gibt Ihnen auch einige zusätzliche Informationen kostenlos! Kombinieren Sie dies mit einer DeletedBy Spalte, um zu verfolgen, wer es getan hat.

Sobald Sie das getan haben, können Sie eine benutzerdefinierte UserStore erstellen, die gelöschte Benutzer in den Ergebnissen nicht zurückgibt. Sie können mehr darüber bei dieser Frage lesen Adding soft delete to Identity users table

Verwandte Themen