【发布时间】:2011-09-29 21:32:51
【问题描述】:
我和我的团队正在构建一个大型 .NET WinForms 应用程序。该应用程序使用各种“服务”从我们的数据库中获取数据。每个“服务”都存在于自己的解决方案中,并处理特定类型的数据。因此,例如,我们的“ContactsService”管理检索/保存联系人到我们的数据库。
通常,我们一直在为每项服务构建 DTO。因此,我们可能有一个“ContactDTO”,它对联系人上的每条数据都有简单的字符串属性。现在,我们还有一个业务层“Contact”类,它具有完全相同的属性,也许还有一些带有一些业务逻辑的额外方法。最重要的是,“ContactsService”有自己的 Contact 类,该类由 ContactDTO 补充。
管理我们所有的 DTO 和映射已经变得非常痛苦。目前,发送要存储在数据库中的联系人如下所示:
- 将客户端联系人映射到 ContactDTO
- 将 ContactDTO 映射到服务联系人
- 保存联系人
- 地图服务联系 ContactDTO
- 将 ContactDTO 映射到客户端联系人
这感觉很糟糕。如果我们向客户端的 Contact 类添加一个属性,我们必须在 3-4 个位置添加属性和映射。
我们做错了什么,我们怎样才能让我们的生活更轻松?使用 Json.NET 之类的东西并拥有 JSON DTO 会更简单吗?我们检查了 AutoMapper,但一些团队成员认为它太复杂了。
【问题讨论】: