Jul*_*anR 25 c# data-access-layer dto n-tier-architecture service-layer
我有一个存储库层负责我的数据访问,由服务层调用.服务层返回序列化并通过线路发送的DTO.通常,服务只是访问存储库并返回存储库返回的内容.
但要使其工作,存储库必须返回该DTO的实例.否则,您首先必须将存储库返回的数据层对象映射到服务层中的DTO并返回该对象.这看起来很浪费.
最重要的是,如果DTO的创建发生在服务层中,那么在一个存储库调用之前可能已经完成的事情以及因此一个数据库查询现在必须在服务层中的多个存储库调用发生以"组合"最终的DTO.当然,除非我在数据和服务层之间创建一个可以包含这样一个组合对象的传输对象.这则必须映射到DTO.为了纯洁,这似乎是浪费.但是,让存储库层返回仅通过线路发送的对象也是错误的.
Ali*_*tad 16
简答:不.
答案很长:存储库负责将持久数据转回实体(模型),反之亦然.
Model是表示业务实体的业务模型.另一方面,DTO - 虽然看起来像模型 - 关注在各种环境之间传递对象,实质上是一个瞬态对象.通常,映射器负责将模型转换为DTO.
小智 5
\n\n\n那么您的存储库需要水合整个实体,即使它没有被使用?这看起来效率很低。\xe2\x80\x93 ajbeaven 2018-10-29 23:25
\n
您不能向存储库接口添加方法来进行不需要水合整个实体的调用吗?我认为这可能会导致界面臃肿,我认为这是反对的主要论点之一。
\n\n为了回答这个问题,我同意“否”的公认答案。存储库实现位于持久层中。领域层可能需要从持久层检索深层或浅层对象,持久层除了必须实现的接口之外一无所知。如果域在只需要黄油时不断要求装满冰箱,那么接口(或者数据模型)可能需要一些工作。
\n| 归档时间: |
|
| 查看次数: |
10357 次 |
| 最近记录: |