假设您有一个数据库,用于存储有关票务系统的信息(如帮助台)。 (简化)架构是:
票证(TicketId(PK),TicketDesc,TicketCreated,TicketClosed, 的 AssignedToEmployee(FK))
员工( EmployeeId(PK),EmployeeName,EmployeeFunction)
AssignedToEmployee = EmployeeId 上Ticket和Employee之间存在多个关系。
您必须开发一个 MVC 应用程序(由 EF 实体+ 存储库类组成的 DAL )有关故障单的图表和统计信息,例如在特定时间段内分配给用户的故障单数。为了计算统计数据并将图形值提供给View,您需要执行一些逻辑。 此逻辑可以放在控制器或存储库中。由于控制器必须尽可能保持苗条,并且存储库中的实现逻辑将增加与数据库的耦合,在这种情况下最好的是什么? 创建服务层或创建数据库视图?在后一种情况下,创建的视图将被视为我的EF中的实体?
答案 0 :(得分:2)
我要创建一个服务层。在我看来,控制器实际上是View的一部分。存储库不应该进行计算。您需要中间的服务。这种安排有许多优点:
答案 1 :(得分:1)
我会创建一个服务层,而不是添加数据库视图。
存储库仅处理数据访问,服务层具有业务逻辑,控制器非常纤薄,只是将给出的信息映射到模型。
服务层不一定是指WCF服务或ASMX服务,它可以是您引用的业务层。