我可以在存储库设计模式中返回DTO吗



存储库就像域对象的集合。所以它不应该返回DTO或任何不是域对象的东西。

但是,假设您的域模型有20个包含大量数据的字段,而您只想在这里使用2个字段,您必须先获取整行,然后对其进行映射,这是非常低效的。

这取决于情况。如果使用DDD和CQRS进行建模,则应该为命令返回Aggregate,为查询返回ViewModels。您可以在读取和写入中拆分repo,例如,读取用于服务视图,或者RESTAPI,在这种情况下,您将有DTO而不是ViewModels,因此您只返回查询中需要的数据(字段(。

在写入堆栈中,您应该有一个返回的方法,并且返回类型应该是该特定存储库的Aggregate(如果您不想加载所有相关的子集合,请使用惰性加载(

TAggregate GetById(object id) 

最新更新