Ho un po 'di logica come questa, prima di salvare il magazzino nel db, controllerò se nel database ci sono le azioni con lo stesso codice. La mia domanda è dove dovrei inserire la logica, nel livello di servizio o nel livello del repository. ecco il codice di esempio:
Opzione 1: mettere nello strato servizio, ho messo il Metodo IsAccountAlreadyExists nello strato servizio
dove mettere la logica di validazione? In servizio o deposito?
public override void Save(AccountInfo accountInfo)
{
using (var scope = new TransactionScope())
{
if(this.IsAccountAlreadyExists(accountInfo))
{
throw new AccountAlreadyExistedException(
"Account Code : " + accountInfo.AccountCode +
" already existed.");
}
accountRepository.Save(accountInfo);
scope.Complete();
}
}
opzione 2: Ti spostare le IsAccountAlreadyExists logica allo strato repository.
public override void Save(AccountInfo accountInfo)
{
try
{
using (var scope = new TransactionScope())
{
accountRepository.Save(accountInfo);
scope.Complete();
}
}
catch(AccountAlreadyExistedException e)
{
...
}
}
Qual è la tua opinione?