在DTO的角色中使用DataTable

时间:2015-08-10 04:37:26

标签: c# asp.net-mvc datatable dto

将DataTables用作DTO是没有意义的吗? 目前在我的MVC项目中,我使用自己的DAL,它的方法返回DataTables,每个视图也有ViewModel。 所以要向View提供数据有以下步骤:

  1. DAL返回DataTable。
  2. 使用AutoMapper将结果映射到DTO。
  3. DTO将使用AutoMapper映射到ViewModel。
  4. 如果我们省略第2步并将DataTables直接映射到ViewModels,那么我们可以获得更少的代码,甚至可以获得更高的性能。 所以如果我们使用DataTables而不是DTOs类是实用的吗? 你能告诉我你的答案是什么原因吗?

1 个答案:

答案 0 :(得分:1)

为什么需要DTO? DTO是数据传输对象,通常表示在进程之间传输数据的对象。如果您没有进行任何进程间通信,则可能不需要这样做。

省略第2步将导致代码减少,并且您之间的viewmodel已经与数据结构分离。从我在你的问题中可以看出:省略它。

修改

根据您的更新,您仍然很难说出为什么需要DTO。

我想阻止这种情况成为“依赖” - 但是如果没有具体细节,很难给你一个明确的答案。我对你的问题的回答归结为:

如果您不需要,请不要介绍DTO等概念。

但是如果没有完整的背景,你是否需要它们很难做出决定:

  • 您的应用和域名的复杂程度如何?
  • 为什么DAL会返回DataTables?

您提到将域模型组合到DTO中:您是否可能在多个场景中重复使用相同的组合逻辑?

如果您 重复使用相同的组合逻辑,那么将它置于某种服务/外观之后并揭露您称之为DTO的内容可能是有意义的。另一方面:如果您的应用程序100%非常简单,请丢弃代码:只需将所有内容放入控制器中。

希望这有帮助。