Скажем, в моей базе данных есть отношение один ко многим между статусами заказов и заказами. Мой взгляд на создание нового заказа должен иметь выпадающий список статусов заказов.
У меня есть отдельные репозитории для статуса заказа и заказа, а также отдельные сервисы для управления заказами и статусами заказа. Что-то вроде:
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 и включите метод, который будет возвращать статусы заказов.
public class OrderService : IOrderService
{
private readonly IRepository<Order> _OrderRepository;
private readonly IRepository<OrderStatus> _OrderStatusRepository; ...
2) Информируйте контроллер об обеих службах и используйте метод GetOrderStatus, чтобы получить список OrderStatuses:
public class OrderController : Controller
{
private readonly IOrderService orderService;
private readonly IOrderService orderStatusService; ...
3) Используйте OrderStatusService из OrderService, чтобы получить список статусов заказов, что-то вроде:
public class OrderService : IOrderService
{
private readonly IRepository<Order> _orderRepository;
private readonly IOrderService _orderService; ...
public IEnumerable<OrderStatus> GetOrderStatuses()
{ return _orderService.GetOrderStatuses; } ...
4) Еще один крутой способ, о котором я не могу думать :)