Zamiast 10 metod w repozytorium do edycji modelu stworzyłem jedną metodę "Update", która przyjmuje obiekt i coś wykonuje.

Eventy znajdujące się w owym modelu przypisane są w repozytorium do konkretnych metod.
Problem jest taki, że ta konfiguracja wykonuje się co stworzenie repozytorium - co request ;(

W jaki sposób to zmienić? Co zastosować?

public class Document : Entity
    {
        public void Approve()
        {
            this.IsApproved = true;
            this.AddEvent(new Approved());
        }

        public void Disapprove()
        {
            this.IsApproved = false;
            this.AddEvent(new Disapproved());
        }
    }
public class Approved : IEvent
    {
    }
   public interface IDocumentRepository
    {
        Task<IResult> UpdateAsync(Document document);
    }

  public async Task<IResult> UpdateAsync(Core.Document document)
        {
            IEvent domainEvent = document.Events.FirstOrDefault();
            return await this.actions[domainEvent.GetType()].Invoke(document, domainEvent);
        }
public DocumentRepository(IDocumentRepositoryClient client)
        {
            this.PopulateFunctions(); // konfiguracja przypisania metod do eventów
        }
      private Dictionary<System.Type, Func<Core.Document, IEvent, Task<IResult>>> actions;

        private void PopulateFunctions()
        {
            this.actions = new Dictionary<Type, Func<Core.Document, IEvent, Task<IResult>>>
            {
                [typeof(Core.Approved)] = this.ApproveAsync,
                [typeof(Core.Disapproved)] = this.DisapproveAsync,
            };
        }

        private async Task<IResult> ApproveAsync(Core.Document document, IEvent domainEvent)