권한있는 사용자가 현재 데이터를 저장하고 전자 메일을 기록하려고 시도하고 있는지 확인하려고합니다. 사용자 전자 메일로 일반 필드 업데이트
나는 타임 스탬프에 대한 업데이트를 수행 내 dbcontext의 기본 설정을 가지고 있지만 난 사용자 정보에 액세스하는 방법을 알아낼 수 없습니다 :이 모든 ASP 코어 2를 기반으로 배경의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;
}
}
}
좀 더 및 EF 코어. DBContext는 ASP Core 2 및 Identity Server4에 구축 된 IDPContoso라는 사용자 지정 ID 공급자를 사용하는 내 APIContoso 프로젝트에 있습니다.
어떻게 기록 할 수 있도록 DBContext에서 사용자의 전자 메일을 가져올 수 있습니까?
호는 DbContext' 그것이 IdentityDbContext' '에서 파생 또는 인증 정의 구현하고자'구현 한을'동안 SavaChange' . – Aria
ChangeTracker.Entries을 사용하면 특정 유형의 모든 첨부 항목을 캐스팅하지 않고 가져올 수 있으며 null 참조로 실행할 수 있습니다. –
DevilSuichiro