问题标签 [dto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何为不同的上下文处理和组织 DTO?
在各种场景中使用简单的 DTO 时,我经常遇到同样的问题,我一直想知道是否有更好的方法来处理它。
问题是,我有一个业务对象,例如Asset
,它有一堆属性、子对象和计算字段,其中一些在时间上计算成本很高,其中一些在数据量上很大。我需要在 UI 的各个屏幕中使用此对象的不同风格,例如
- 在显示层次结构的树中,我只需要显示名称即可
- 在我只显示几个属性的网格中
- 在有大量可用信息的详细信息窗格中,但仍有一些信息(如映射对象)仅按需显示
为了能够在这种情况下实现最佳性能,我总是为每个上下文创建不同的 DTO,只包含在该上下文中实际使用的信息子集。虽然是资源优化解决方案,但这会导致几个问题:
- 我有大量 DTO 类的类爆炸
- 我很难为同一个东西想出不同的名字,
AssetDtoForGridInTheOverviewScreenInTheUpperPaneAboveTheSplitter
更不用说以后维护它们了 - 我经常在转换方法中重复自己,因为大多数DTO 都使用了一些属性,但不是所有的都使用了(因此我不能将它们放入任何超类并重用转换逻辑)
我使用的技术是 ASP.NET SOAP WebServices 和 C# 3.5,但我认为这可能是一个与语言无关的问题。欢迎任何想法..
visual-studio - 如何指定 T4 文件是否应产生任何输出
我正在使用 T4 生成一些 DTO 类 + 映射器。
我将文件拆分为多个可重复使用的位(其中一些包含常用方法,一些其他常用过程)并将它们包含到将产生我的输出的 T4 模板中 - 这一切都很好。
我的问题是每次我对它们进行更改时,可重用的 .tt 文件都会尝试生成它们自己的输出并失败(因为它们与其他一些 .tt 文件耦合),这很糟糕。
我很确定我在某处看到了一些指定给定文件的指令不应该尝试产生任何输出,但我似乎无法追踪它。
任何帮助表示赞赏!
jpa - 使用 JPA 将实体转换为 DTO
我使用 DataNucleus 作为 JPA 实现将我的类存储在我的 Web 应用程序中。我使用了一组转换器,它们都具有toDTO()
和fromDTO()
.
我的问题是,我想避免通过网络发送整个数据库:
- 如果我延迟加载,转换器将尝试访问所有字段,然后加载(导致非常急切的加载)。
- 如果我不延迟加载,我将获得数据库的很大一部分,因为用户包含组,组包含用户,等等。
有没有办法在我加载的类中显式加载某些字段并将其他字段保留为 NULL?我已经尝试过 DataNucleus 文档,但没有成功。
c# - 我应该如何创建一个描述一些导入数据的 XML 文件并将其映射到 DTO?
我必须编写一个导入实用程序,它将导入 xml 文件中保存的一些数据。我想我将创建一个简单的 DTO 对象,它是导入数据的表示,然后编写我所有的代码,以便它基于这个对象进行导入。
XML 文件将是传输格式的定义,因此我希望第 3 方将生成该格式的文件,以便能够将数据导入应用程序。该格式将来也可能会扩展,以允许导入更多类型的数据。
我想要的是让我的对象填充所有要从 XML 文件处理的导入数据的简单方法。
我在想我可以反序列化 xml 文件,但我担心在没有 DTO 对象首先序列化的情况下创建文件的第 3 方可能会出现问题。这可能是一个问题吗?还有哪些其他选择,最好不涉及手动读取 xml 文件,但显然这将是后备解决方案。
model-view-controller - MVC:为 DTO 提供对数据访问层的引用是否被认为是不好的形式?
为 DTO 提供对数据访问层的引用是否被认为是不好的形式?
还是应该始终在数据访问层和应用层之间传递DTO?
编辑:例如,想象一下:
- 我在我的数据库中保留了一个产品类型列表。
- 我想在局部视图的下拉框中呈现此列表。
- 这个局部视图被强类型化为 DTO。
- 问题:
- 我是否应该先检索我的产品类型列表,然后通过其构造函数将其传递给 DTO?
- 或者将存储库引用传递给 DTO,然后期望它从数据访问层检索此列表是否可以接受?
.net - 我应该在 WCF (namedPipes) 上使用 DTO 吗?
我的意思是如果我在 http 上使用 WCF,我会毫不犹豫。
我的 ORM 是 LLBLGen Pro,它为我提供了一些非常好的实体集合功能,比如跟踪更改等。如果我走 DTO 路径,我将失去此功能。目前在客户端有一个 Web 应用程序,它不需要任何跟踪更改功能,但也许有一天客户端会有一个 silverlight 应用程序。
对此你们怎么看?
c# - AutoMapper:将多对多关联映射到 DTO(是否支持展平集合项?)
我在团队和员工之间有多对多的关联。
我想将其映射到以下 DTO。
所以 TeamName 是必须映射的那个。
我使用以下映射代码:
问题是 Employee.Teams 成员。顺便说一下,Teams 集合是急切的。所以它就在那里。
当 Teams 为 Null 时,我会收到 NullReference 异常。
如何将团队名称映射到 DTO?
编辑:现在我离开 Automapper 并改用这个繁琐的代码:
对我来说,这闻起来很刺鼻……
c# - 最佳实践:如何在视图中以干净的方式显示多对多关联?
我正在使用 NHibernate,并且员工和团队之间存在多对多关联。
现在我想显示所有员工及其团队成员的姓名。
可能性一:
- 使用 AutoMapper 并创建一个包含 Employee 属性和团队名称的 DTO(渴望加载团队)
- 在视图中显示 DTO
可能性2:
- 创建一个名为 EmployeeTeam 的新实体并将其与 NHibernate/FluentNHibernate 映射(该实体充当数据库中 Employee 和 Team 之间的关系表)
- 使用急切加载加载 TeamEmployee 包括 Employee 和 Team
- 显示 EmployeeTeam 实体
- 使用 EmployeeTeam 成员 (EmployeeTeam.Employee.Name, EmployeeTeam.Team.Name)
可能性3:
- 作为可能性 1 和 2
- 为 EmployeeTeam 使用 DTO
可能性4:
- 使用 ICriteria API
- 使用 AliasToBeanResultTransformer (没有使用这个)
可能性5:
- 使用 LINQ 到 NHibernate
- 我想我仍然需要 EmployeeTeam 实体(目前不在我的领域模型中)
这个问题的最佳实践是什么?
还有其他建议吗?
data-access-layer - 我应该在哪里进行转换:域对象<-> DTO?
在域层还是数据访问层?
java - 将 XML 转换为 Java DTO 并返回 GWT
寻找在使用 GWT 时将 Java DTO 转换为 XML 并返回的最佳方法。我看到 GWT 在它的客户端包中有 XMLParser,它是一个 DOM Parser。我正在寻找一种更像 JAXB 的插件功能,可以与 GWT 一起使用。