【发布时间】:2011-06-10 18:25:57
【问题描述】:
假设我的数据库中的订单状态和订单之间存在一对多关系。我创建新订单的视图需要有一个订单状态下拉列表。
我有用于订单和订单状态的单独存储库以及用于操作订单和订单状态的单独服务。类似的东西:
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(){...}
}
我的订单控制器有一个OrderService的引用,有点像这样:
public class OrderController : Controller
{
private readonly IOrderService orderService;
从数据库中获取订单状态列表的最佳方法是什么?
1) 在 OrderService 中包含对两个存储库的引用,并包含一个将返回 orderstatuse 的方法。
public class OrderService : IOrderService
{
private readonly IRepository<Order> _OrderRepository;
private readonly IRepository<OrderStatus> _OrderStatusRepository; ...
2) 让控制器知道这两个服务并使用 GetOrderStatus 方法获取 OrderStatus 列表:
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) 我想不出的另一种很酷的方式:)
【问题讨论】:
标签: c# design-patterns asp.net-mvc-3