Ich versuche, herauszufinden, was der berechtigte Benutzer zur Zeit versucht, die Daten zu speichern und die E-Mail aufnehmen.aktualisieren gemeinsames Feld mit Benutzer E-Mail
Ich habe eine Grundeinstellung in meinem DbContext, die das Update für Zeitstempel tun, aber ich kann nicht herausfinden, wie die Benutzerinformationen zuzugreifen:
public override int SaveChanges()
{
AddTimestamps();
return base.SaveChanges();
}
public override async Task<int> SaveChangesAsync()
{
AddTimestamps();
return await base.SaveChangesAsync();
}
private void AddTimestamps()
{
var entities = ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added || x.State == EntityState.Modified);
var currentUser = "[email protected]" // This i haven't been able to figure out how to retrieve
foreach (var entity in entities)
{
if (entity.State == EntityState.Added)
{
((BaseEntity)entity.Entity).DateCreated = DateTime.UtcNow;
((BaseEntity)entity.Entity).CreatedBy = currentUsername;
}
((BaseEntity)entity.Entity).DateModified = DateTime.UtcNow;
((BaseEntity)entity.Entity).ModifiedBy = currentUsername;
}
}
}
bisschen mehr von einem Hintergrund das alles auf ASP-Core gebaut 2 und EF Kern. Der DBContext befindet sich in meinem APIContoso-Projekt, das den benutzerdefinierten Identitätsanbieter IDPContoso verwendet, der auf ASP Core 2 und Identity Server4 basiert.
Wie kann ich die Benutzer-E-Mail innerhalb des DBContext erhalten, damit ich sie aufzeichnen kann?
Ho haben Sie implementiert 'DbContext' ist es, abgeleitet von' IdentityDbContext' oder Sie implementieren benutzerdefinierte Authentifizieren während 'SavaChange' . – Aria
ChangeTracker.Entries ermöglicht es Ihnen, alle angeschlossenen Einträge eines bestimmten Typs zu bekommen, anstatt sie zu werfen und möglicherweise in eine Null-Referenz ausgeführt werden. –
DevilSuichiro