【问题标题】:How to prevent DTO`s when using asp.net MVC with domain services将 asp.net MVC 与域服务一起使用时如何防止 DTO
【发布时间】:2015-12-27 10:52:25
【问题描述】:

我有存储库和服务。这些服务要么编排多个存储库调用,要么执行一些与存储库调用合并的内存数据逻辑,以便我想要返回 DTO。这些 DTO 然后为 UI 完美修剪。但是......我使用 asp.net mvc,我的服务会将 DTO 返回到我应该需要视图模型的 mvc 控制器。但是我的 DTO 已经几乎和 ViewModel 一样了。唯一的例外是我的 DTO 没有 Validation 属性,因为它确实属于视图模型。

如果同时使用 DTO 和视图模型似乎很多,我还能做什么?

【问题讨论】:

    标签: c# asp.net-mvc repository service-layer


    【解决方案1】:

    您可以考虑以下一些选项。
    您可以根据您的要求和应用程序的规模在选项之间进行权衡:

    • 您可以使用对象-对象映射器,例如AutoMappper
    • 您可以将 DTO 传递给 ViewModel 的构造函数。
    • 您可以使用 ViewModel 的公共静态方法从 DTO 创建 ViewModel 的实例。
    • 在您的 ViewModel 中,您可以从 DTO 继承并使用元数据类来验证属性,然后使用 [MetadadaType(typoef(YourMetadataClass))] 装饰您的 ViewModel 类
    • 您可以将您的 DTO 用作 ViewModel 和类似之前的选项,使用元数据类来验证属性,然后使用 [MetadadaType(typoef(YourMetadataClass))] 装饰您的 ViewModel 类

    我还假设您的 DTO 位于与您的服务库不同的 dll 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-06
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多