Dar*_*rov 18
服务层应包含业务操作,并且应与数据访问层(存储库)分离.服务层公开可以由多个CRUD操作组成的业务操作.这些CRUD操作由存储库执行.因此,例如,您可以进行业务操作,将一定数量的资金从一个帐户转移到另一个帐户,并且为了执行此业务操作,您需要首先确保发件人帐户有足够的条款,借记发件人帐户并贷记收款人帐户.服务操作还可以表示SQL事务的边界,这意味着在业务操作中执行的所有基本CRUD操作都应该在事务内部,并且要么所有这些操作都应该成功,或者在出现错误时回滚.
为了将服务层与底层数据访问层分离,您可以使用接口:
public class BankService
{
private readonly IAccountsRepository _accountsRepository;
public OrdersService(IAccountsRepository accountsRepository)
{
_accountsRepository = accountsRepository;
}
public void Transfer(Account from, Account to, decimal amount)
{
_accountsRepository.Debit(from, amount);
_accountsRepository.Credit(to, amount);
}
}
Run Code Online (Sandbox Code Playgroud)