So erhalten Sie Benutzerinformationen in DbContext mithilfe von Net Core

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So erhalten Sie Benutzerinformationen in DbContext mithilfe von Net Core

by Guest » 16 Jan 2025, 11:37

Ich versuche, eine Klassenbibliothek zu entwickeln, in der ich benutzerdefinierten DbContext implementieren möchte. In der SaveChanges-Methode des DbContext muss ich zu Prüfzwecken die Informationen des aktuellen Benutzers (Abteilung, Benutzername usw.) abrufen. Ein Teil des DbContext-Codes ist unten:

Code: Select all

public override int SaveChanges()
{
// find all changed entities which is ICreateAuditedEntity
var addedAuditedEntities = ChangeTracker.Entries()
.Where(p => p.State == EntityState.Added)
.Select(p => p.Entity);

var now = DateTime.Now;

foreach (var added in addedAuditedEntities)
{
added.CreatedAt = now;
added.CreatedBy = ?;
added.CreatedByDepartment = ?
}
return base.SaveChanges();
}
Zwei Optionen fallen mir ein:
  • Verwenden von HttpContext.Items um Benutzerinformationen zu behalten, IHttpContextAccessor einzufügen und Informationen von
    abzurufen

    Code: Select all

    HttpContext.Items
    (In diesem Fall hängt DbContext von HttpContext ab, ist es
    korrekt?)
  • Verwenden des ThreadStatic-Objekts anstelle von HttpContext.Items und Informationen vom Objekt abrufen (ich habe einige Beiträge gelesen
    dass ThreadStatic nicht sicher ist)
Frage : Welche Passt es am besten in meinen Fall? Gibt es einen anderen Weg, den Sie vorschlagen?

Top