假设我的数据库中订单状态和订单之间存在一对多关系。我创建新订单的 View 需要有一个订单状态下拉列表。
我有单独的订单和订单状态存储库,以及处理订单和订单状态的单独服务。像这样的东西:
public class OrderService : IOrderService
{
private readonly IRepository<Order> _orderRepository;
public OrderService(IRepository<Order> orderRepository) {_orderRepository = orderRepository }
public IEnumerable<Orders> GetAllOrders(){...}
}
public class OrderStatusService : IOrderStatusService
{
private readonly IRepository<OrderStatus> _OrderStatusRepository;
public OrderStatusService(IRepository<OrderStatus> orderStatusRepository) {_orderStatusRepository = orderStatusRepository }
public IEnumerable<OrderStatus> GetAllOrderStatuses(){...}
}
我的订单 Controller 有一个对 OrderService 的引用,有点像这样:
public class OrderController : Controller
{
private readonly IOrderService orderService;
从数据库中获取订单状态列表的最佳方法是什么?
1) 在 OrderService 中包含对两个存储库的引用,并包含一个将返回订单状态的方法。
public class OrderService : IOrderService
{
private readonly IRepository<Order> _OrderRepository;
private readonly IRepository<OrderStatus> _OrderStatusRepository; ...
2) 让 Controller 知道这两个服务并使用 GetOrderStatus 方法获取 OrderStatuses 列表:
public class OrderController : Controller
{
private readonly IOrderService orderService;
private readonly IOrderService orderStatusService; ...
3) 使用 OrderService 中的 OrderStatusService 获取订单状态列表,类似于:
public class OrderService : IOrderService
{
private readonly IRepository<Order> _orderRepository;
private readonly IOrderService _orderService; ...
public IEnumerable<OrderStatus> GetOrderStatuses()
{ return _orderService.GetOrderStatuses; } ...
4) 我想不到的另一种很酷的方式:)
最佳答案
就我个人而言,我会选择您的选项 #1 - 将您现有的两项服务合二为一。请记住,您的服务层应该充当 facade。在较低级别的服务上,例如您的存储库。为这种情况提供两个独立的服务达不到目的。
关于c# - ASP.NET MVC3 服务层 - 每个服务有多个存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6304787/