如何同时使用 DTO 和 ViewModel?或者这是不可能的?

blu*_*oon 4 .net asp.net-mvc dto viewmodel asp.net-web-api

注意:我的问题是在 .NET/C# 项目中使用 DTO、ViewModel。

我知道 DTO、ViewModel、模型。他们有特定的目的。我们使用 DTO 传输数据,使用 ViewModel 向最终用户显示数据。但是我对将它们全部一起使用感到困惑。我做了很多谷歌搜索,但没有找到如何一起使用它们的完整教程。

我不确定它们是否可以一起使用,或者它们必须用于特定目的,例如对于常规 MVC,我们可以使用 ViewModel,对于 WebAPI,我们将使用 DTO。

任何人都可以解释使用它们的方式,或者任何将它们集中在一起使用的链接表示赞赏。

Win*_*Win 5

我做了很多谷歌搜索,但没有找到如何一起使用它们的完整教程。

View <----------- -> Controller <-----------> Service/Repository
        ViewModel                    DTO
            ^--------AutoMapper-------^     
Run Code Online (Sandbox Code Playgroud)

ViewModel主要用于从 Controller 向 View传递数据时使用。

数据传输对象 (DTO)是一个松散的术语;您也可以将 POCO 实体称为 DTO。它基本上用于将数据从服务/存储库层传递到控制器,反之亦然。

将数据从 DTO 传输到 ViewModel 的工作量很大,所以我们通常使用AutoMapper从 DTO 到 ViewModel,反之亦然。

您绝对可以为 MVC 和 WebAPI 共享 ViewModel。

任何人都可以解释使用它们的方式,或者任何将它们集中在一起使用的链接表示赞赏。

在我的示例项目中,我有EmailTemplateModel (View Model)EmailTemplate

EmailTemplate 类用于将数据从EmailTemplateService传输到EmailTemplateController。然后我使用AutoMapper来映射对象。