Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在应用程序层还是业务层转换存储库数据?_C#_Repository Pattern - Fatal编程技术网

C# 在应用程序层还是业务层转换存储库数据?

C# 在应用程序层还是业务层转换存储库数据?,c#,repository-pattern,C#,Repository Pattern,我正在使用c#中的repository Paten,其洋葱架构包含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 我

我正在使用c#中的repository Paten,其洋葱架构包含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操作)


将数据转换为其他内容是属于业务逻辑层的“业务逻辑”,即您所称的“应用程序”层。我建议将其称为前者或应用层以外的其他名称,因为它不常被称为应用层;术语“应用程序”通常指整个……嗯……应用程序。

当你说数据层应该关注CRUD操作时,我假设你包括搜索操作,这也可能是一种非正式的数据操作……这是一个有很多争议的广泛话题,但我会说不,对查询中的数据进行操作的方式不会太多。只需直接查询将数据拉入POCO的实体表。顺便说一句,这使得使用实体框架或NHibernate之类的ORM工具成为可能。我同意这一点。你说…使使用ORM成为可能。。抱歉,是什么让这成为可能?有一个“常规”设置,即db模式,其中的实体在应用程序中具有匹配的POCO,您可以使用纯CRUD ops与数据交互。