首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >存储库层是否应该返回数据传输对象(DTO)?

存储库层是否应该返回数据传输对象(DTO)?
EN

Stack Overflow用户
提问于 2011-02-22 01:12:31
回答 2查看 18.5K关注 0票数 34

我有一个存储库层,负责我的数据访问,这是由服务层调用的。服务层返回DTO,这些DTO被序列化并通过网络发送。通常,服务所做的仅仅是访问存储库并返回存储库返回的任何内容。

但要实现这一点,存储库必须返回该DTO的一个实例。否则,您必须首先将存储库返回的数据层对象映射到服务层中的DTO,然后再返回该对象。这似乎是一种浪费。

最重要的是,如果DTO的创建发生在服务层中,那么以前可能在一个存储库调用中完成的事情,从而一个数据库查询,现在必须在服务层中使用多个存储库调用来“组成”最终的DTO。当然,除非我在数据层和服务层之间创建了一个传输对象,该对象可以包含这样一个组合对象。然后必须将其映射到DTO。为了纯洁,这似乎是一种浪费。但是,让存储库层返回刚刚存在的要通过网络发送的对象也是错误的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 01:19:36

简短的回答是:不。

长答案:存储库负责将持久化数据转换回实体(模型),反之亦然。

模型是表示业务实体的业务模型。另一方面,DTO -虽然看起来像模型-关注对象在不同环境之间的传输,本质上是一个瞬时对象。通常,DTO映射器负责将模型转换为

票数 24
EN

Stack Overflow用户

发布于 2019-04-13 03:18:49

所以你的存储库需要对整个实体进行水化处理,即使它不被使用?这似乎非常低效。- ajbeaven 10月29‘18年23:25

对于不需要对整个实体进行水合的调用,您不能向存储库接口添加方法吗?我认为这可能会导致接口臃肿,这是反对的主要论点之一。

为了回答这个问题,我同意被接受的答案:否。存储库实现位于持久层。如果域经常需要一个满冰箱,而它只需要黄油,那么接口(或者数据模型)可能需要一些工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5068984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档