Вы можете обернуть это в хранилище. Если все ваши сущности имеют одни и те же поля, вы можете определить басовую сущность с этими полями и извлечь из нее другие сущности (Таблица для конкретного класса hiearchy).
Затем вы можете определить базовый класс для вашего хранилища, например:
// Other repositories derive from this repository
// BaseEntity is parent of all your entities and it has your shared fields
public abstract class BaseRepository<T> where T : BaseEntity
{
....
public void Save(IIdentity user, T entity)
{
entity.CreatedBy = user.Name;
entity.LastModifiedBy = user.Name;
...
}
}
Вы можете дополнительно улучшить этот код, передав IIdentity непосредственно в конструктор хранилища или, что еще лучше, передав некоторый пользовательский поставщик удостоверений в конструктор хранилища. Реализация провайдера по умолчанию для веб-приложения возвращает идентификатор из HttpContext.