数据传输对象的意图是从不同的源存储数据,然后一次性将其传输到数据库(或远程门面)中。 但是,DTO模式违反了单一职责原则,因为DTO不仅存储数据,还将其从数据库/门面传输进出。 将数据对象与业务对象分离的需求并非反模式,因为很可能需要分离数据库层。 应该使用聚合和仓储模式来替代DTO,这将分离对象的集合(聚合)和数据传输(仓储)。 要传输一组对象,您可以使用工作单元模式,该模式包含一组存储库和事务上下文;以便在事务内分别传输聚合中的每个对象。