服务应该访问其他服务还是仅存储库?

时间:2014-11-20 08:36:23

标签: c# repository-pattern unit-of-work

例如,客户服务有一种取消该客户特定订单的方法:

public class CustomerService : ICustomerService<Customer>
{
     public void CancelOrder(int orderNo) 
     {
         //customerRepository here...
     }
}

然后,用于批处理的另一项服务也可以取消多个订单:

public class BatchService : IBatchService
{
     public void CancelOrders(params int[] orderNos) 
     {
         //What here?
     }
}

取消客户订单的代码位于CustomerServiceBatchService是否应该CustomerService.CancelOrder或是否应该只使用客户存储库?

1 个答案:

答案 0 :(得分:1)

我不会两次写取消逻辑。你拥有它取决于你,但鉴于你目前的结构,我会将ICustomerService注入BatchService。所以课程看起来像

public class BatchService : IBatchService
{
    public ICustomerService<Customer> CustService { get; set; }

    public void CancelOrders(params int[] orderNos)
    {
        foreach (int orderNo in orderNos)
            CustService.CancelOrder(orderNo);
    }
}