Digamos que tengo una relación de uno a muchos en mi base de datos entre orderstatus y pedidos. Mi punto de vista para crear un nuevo pedido debería tener un menú desplegable de orderstatuses.Capa de servicio de ASP.NET MVC3: ¿múltiples repositorios por servicio?
Tengo repositorios separados para el orden y el estado de la orden, así como servicios separados para manipular pedidos y estados de pedidos. Algo así como:
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(){...}
}
Mi corrector de orden tiene una referencia a la OrderService, un poco como esto:
public class OrderController : Controller
{
private readonly IOrderService orderService;
¿Cuál es la mejor manera de hacerlo obtener una lista de orderstatuses desde el PP?
1) Incluye una referencia a ambos repositorios en el OrderService e incluye un método que devolverá orderstatuses.
public class OrderService : IOrderService
{
private readonly IRepository<Order> _OrderRepository;
private readonly IRepository<OrderStatus> _OrderStatusRepository; ...
2) Hacer que el controlador sepa de ambos servicios y utilizar el método GetOrderStatus para obtener la lista de OrderStatuses:
public class OrderController : Controller
{
private readonly IOrderService orderService;
private readonly IOrderService orderStatusService; ...
3) Usar la OrderStatusService del OrderService para obtener la lista de orden Statuses , algo así como:
public class OrderService : IOrderService
{
private readonly IRepository<Order> _orderRepository;
private readonly IOrderService _orderService; ...
public IEnumerable<OrderStatus> GetOrderStatuses()
{ return _orderService.GetOrderStatuses; } ...
4) Otra manera fresca que no puedo pensar en :)
Según la pregunta publicada, no sabemos qué datos constituyen un Estado del pedido: quizás haya varias facetas de datos que conforman el concepto de un Estado del pedido dentro de su modelo. –
Estoy completamente de acuerdo ... Solo estaba usando orderstatus como ejemplo para ilustrar la relación de uno a muchos. No tendría un servicio o clase por separado para orderstatuses si solo contenía un campo de cadena. – woggles
@elkdanger: cierto, pero el desarrollador razonable supondría que el nombre " estado" indica que es una propiedad del , es decir, que pertenece totalmente al y, por lo tanto, es un excelente candidato para una enumeración. Todavía no altera ese empuje básico de mi respuesta. –
Xhalent