Как получить информацию о пользователе в DbContext с помощью Net CoreC#

Место общения программистов C#
Anonymous
Как получить информацию о пользователе в DbContext с помощью Net Core

Сообщение Anonymous »

Я пытаюсь разработать библиотеку классов, в которой хочу реализовать собственный DbContext. В методе SaveChanges DbContext мне нужно получить информацию о текущем пользователе (отдел, имя пользователя и т. д.) для целей аудита. Некоторая часть кода DbContext приведена ниже:

Код: Выделить всё

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();
}
На ум приходят два варианта:
  • Использование HttpContext.Items чтобы сохранить информацию о пользователе, внедрив IHttpContextAccessor и получив информацию из

    Код: Выделить всё

    HttpContext.Items
    (В данном случае DbContext зависит от HttpContext, это
    правильно?)
  • Использование объекта ThreadStatic вместо HttpContext.Items code> и получение информации от объекта(я читал некоторые сообщения
    о том, что ThreadStatic небезопасен)
Вопрос : Что лучше всего подходит для моего случая? Есть ли другой способ, который вы предлагаете?

Подробнее здесь: https://stackoverflow.com/questions/364 ... g-net-core

Вернуться в «C#»