Persibilità dell'entità all'interno degli eventi di dominio utilizzando un repository and Entity Framework?

StackOverflow https://stackoverflow.com/questions/5970449

Domanda

Sto approfondendo eventi di dominio e ho bisogno di alcuni consigli sui persistenti aggiornamenti a un'entità per motivi di storia. Il mio esempio si occupa di un'entità utente e dell'accesso:

    public class UserService
    {
        private UserRepository _repository;

        public UserService()
        {
            _repository = new UserRepository();
        }

        public User SignIn(string username, string password)
        {
            var user = _repository.FindByUsernameAndPassword(username, password);
            //As long as the found object is valid and an exception has not been thrown we can raise the event.
            user.LastLoginDate = DateTime.Now;
            user.SignIn();
            return user;
        }
    }

    public class User
    {
        public User(IEntityContract entityContract)
        {
            if (!entityContract.IsValid)
            {
                throw new EntityContractException;
            }
        }

        public Guid Id { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public DateTime LastLoginDate { get; set; }

        public void SignIn()
        {
            DomainEvent.Raise(new UserSignInEvent() {User = this});
        }
    }

    public class UserSignInEvent : IDomainEvent
    {
        public User User { get; set; }
    }


    public class UserSignInHandler : Handles<UserSignInEvent>
    {
        public void Handle(UserSignInEvent arguments)
        {
            //do the stuff
        }
    }

Quindi, dove ho fatto le cose, voglio aggiornare l'oggetto utente lastLogindato e possibilmente registrare la data e il tempo che l'utente ha effettuato l'accesso per motivi storici. La mia domanda è: creerei una nuova istanza del mio repository e del mio contesto per salvare le modifiche nel gestore o passare qualcosa nell'evento? Questo è ciò con cui sto lottando in questo momento.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top