У меня немного сложная ситуация, и мне нужна помощь здесь. Я разрабатываю приложение WebAPI в C#, используя архитектуру доменного управления и используя Code First с использованием Entity Framework. Это почти завершено, но я хочу провести рефакторинг.
Таким образом, его WebAPI обращается к прикладному уровню, который получает объекты репозитория с помощью конструктора Injection в Application и подключается к базе данных с помощью EF. Отдельный объект Domain имеет все сущности. Прикладной уровень получает доменные объекты, преобразует их в ViewModels (DTO) и отправляет в API.
Пока все работает, некоторым из моих сущностей требуется информация аудита, например, CreatedOn, ModifiedOn, CreatedByUserId, ModifiedByUserId.
Поэтому в настоящее время я вручную добавляю эти значения на прикладном уровне для заполнения DTO, затем заполняю объект домена / сущности с помощью automapper и вызываю репозиторий для вставки или обновления.
Я хочу провести рефакторинг этого кода, так как число объектов увеличивается, этот код повторяется, например,
SomeDTO.CreatedOn = DateTime.Now (), SomeDTO.CreatedBy = userId et c ...
Мой текущий дизайн сущности выглядит примерно так:
publi c class SomeEntity: Entity и Entity определены как Publi c class Entity {publi c Идентификатор Guid;}
Теперь я думаю, что AuditInfo в этой родительской сущности будет иметь следующие строки:
Итак, измените его на: publi c class SomeEntity: AuditEntity и Entity определены как Publi c class AuditEntity {publi c Идентификатор Guid; publi c DateTime CreatedOn; publi c Guid CreatedByUserId et c ..} Но я просто не могу понять, как и когда заполнять этот AuditEntity и как подключить его к SomeEntity.
То, что я хотел бы сделать, - это заполнить этот объект Audit один раз при каждом вызове и каким-то образом добавить его к объекту, возможно, используя преобразование автоматического преобразователя, если это возможно. Любые хиты будут высоко оценены.
Спасибо