Persibilità dell'entità all'interno degli eventi di dominio utilizzando un repository and Entity Framework?
-
12-11-2019 - |
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