通常需要在 UI 上以各种方式显示域对象;列表、搜索结果、查看和编辑页面,以及页眉、页脚和弹出窗口。通常,域对象有几个不同的“ View ”,每个 View 都显示不同的字段。
大多数建议似乎是在您需要子集或超集时使用 DTO 来获取数据。维护 DTO 有很多开销。简单地填充每个场景所需的域对象的属性是否是一种不好的方法。例如,您可以使用配置文件来说明应该包含哪些属性,例如:
service.GetDomainObjects(int listID, Profile.ListProfile);
service.GetDomainObjects(string searchParam, Profile.SearchProfile);
最佳答案
对我来说,这归结为您希望开销在哪里,或者您将拥有一组不同的类来表示您的 DTO,或者您将拥有一组方法,每个方法都返回相同的域对象,但是不同的领域被“水化”。
我会问几个问题来帮助做出决定:
我个人对 DTO 有点偏爱,因为我觉得你的系统的长期维护会更容易。如果你是一个单人乐队,或者这是一个一次性的应用程序,我完全可以理解不想引入一堆会使你的代码变得困惑的额外类。
关于domain-driven-design - POCO 与 DTO : Is it ok to partially hydrate a domain object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/825843/