権限のあるユーザーが現在データを保存して電子メールを記録しようとしているかどうかを調べようとしています。ユーザーのメールで一般的なフィールドを更新する
私は、タイムスタンプのアップデートを行いますが、私は、ユーザー情報にアクセスする方法を見つけ出すことはできません私のdbcontextにおける基本的なセットアップがあります。これは、すべてのASPのCore 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内のユーザーの電子メールを取得する方法はありますか?
実現しませんでした。 – Aria
ChangeTracker.Entriesを使用すると、特定のタイプのすべての添付されたエントリをキャストするのではなく、null参照として実行できるようになります。 –
DevilSuichiro