在应用层或业务层转换存储库数据?

Transform repository data in application or business layer?

我在 c# 中使用存储库模式,洋葱架构包含 api、应用程序、域和数据层。

我注意到在应用层中,需要从数据层接收的数据采用稍微不同的格式。例如,应用层期望来自数据层的数据,例如

GetPeriods()
2017-01-01 2017-01-31 50
2017-02-01 2017-02-28 70
etc

但是在应用层的部分,我还需要以单日列表格式获取这些数据,例如

GetPeriodsAsDays()
2017-01-01 50
2017-01-02 50
etc

我想确保我正确理解存储库模式和洋葱架构,我的问题是我应该

a) 从数据层接收数据后在应用层做TransformPeroidsToDays(GetPeriods)

b) 在数据层执行 GetPeriodsAsDays() 并且已经为应用层配置格式化数据

你绝对想在应用层做TransformPeroidsToDays(GetPeriods)。数据层应该只关心原始数据的创建、检索、更新和删除(CRUD 操作)。

将数据转换成其他东西 "business logic" 属于业务逻辑层,即您所说的 "application" 层。我建议将其称为前者或应用程序层以外的其他名称,因为它通常不被称为;术语 "application" 通常是指整个...嗯...应用程序。