Mam taką logikę, zanim zapiszę zapas w db, sprawdzę, czy w magazynie znajduje się zapas z tym samym kodem zapasów. Moje pytanie brzmi: gdzie powinienem umieścić logikę, w warstwie usługi lub warstwie repozytorium. oto przykładowy kod:
opcja 1: umieścić w warstwie usług, i umieścić metody IsAccountAlreadyExists w warstwie usług
gdzie umieścić logikę walidacji? W usłudze lub repozytorium?
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();
}
}
Opcja 2: poruszę IsAccountAlreadyExists logikę do repozytorium warstwy.
public override void Save(AccountInfo accountInfo)
{
try
{
using (var scope = new TransactionScope())
{
accountRepository.Save(accountInfo);
scope.Complete();
}
}
catch(AccountAlreadyExistedException e)
{
...
}
}
jaka jest Twoja opinia?