表示层应该控制业务交易吗?

时间:2017-08-08 14:24:44

标签: transactions presentation

假设拥有典型的数据访问层,业务层和表示层架构。

数据访问层具有存储库和工作单元。

Business Layer具有使用存储库的数据服务类。

现在假设我有Order实体和OrderItem实体,业务明智我可以单独向数据库添加Order对象,或者添加Order及其OrderItems,或为现有OrderItems添加列表Order

您认为数据服务API应如何?

解决方案1:

OrderDataService(UnitOfWork uow) // Constructor
OrderDataService.Add(Order order);
OrderItemDataService() // Constructor
OrderItemDataService.Add(OrderItem item);

然后在演示级别使用这两种方法,以形成单独添加OrderOrderOrderItems等所有可能的变体。将这些操作包装在一个事务中(单位为工作)在表示层级别。

解决方案2:

OrderDataService() // Constructor
OrderDataService.Add(Order order);
OrderDataService.AddWithItems(Order order, List<OrderItem> items);
OrderItemDataService() // Constructor
OrderItemDataService.Add(List<OrderItem> items);

然后在这些方法中创建事务(工作单元),让Presentation层完全无知,即使是最简单的事务形式,只需每个事务调用一个方法,让业务层关心其余的事务?

0 个答案:

没有答案