gpt4 book ai didi

c# - ASP.NET MVC3 服务层 - 每个服务有多个存储库?

转载 作者:太空狗 更新时间:2023-10-29 21:06:34 24 4
gpt4 key购买 nike

假设我的数据库中订单状态和订单之间存在一对多关系。我创建新订单的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com