假设拥有典型的数据访问层,业务层和表示层架构。
数据访问层具有存储库和工作单元。
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);
然后在演示级别使用这两种方法,以形成单独添加Order
,Order
和OrderItems
等所有可能的变体。将这些操作包装在一个事务中(单位为工作)在表示层级别。
解决方案2:
OrderDataService() // Constructor
OrderDataService.Add(Order order);
OrderDataService.AddWithItems(Order order, List<OrderItem> items);
OrderItemDataService() // Constructor
OrderItemDataService.Add(List<OrderItem> items);
然后在这些方法中创建事务(工作单元),让Presentation层完全无知,即使是最简单的事务形式,只需每个事务调用一个方法,让业务层关心其余的事务?