asp.net-mvc - Domain vs DTO vs ViewModel - 如何以及何时使用它们?

标签 asp.net-mvc entity-framework viewmodel automapper dto

在具有域层 (DL)/业务(服务)层 (BL)/表示层 (PL) 的多层项目中,将实体交付到表示层的最佳方法是什么?

DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;

选项 1:

DL => DO => BL => DTO => PL => VM => V

此选项似乎是最佳实践,但维护起来也很困难。

选项 2:

DL => DO => BL => DTO => PL => V

这个选项似乎不是很好的做法,但由于 DTO 几乎与 VM 相同,我们可以将它直接传递给 View ,并且实现和维护起来不那么痛苦。

此选项对于多种布局是否也可靠,例如,对于移动设备,我可能需要来自 BL 的信息较少,因此我需要针对此特定布局使用不同的 VM?

最佳答案

将DTO传递给 View 就可以了。如果您需要更改或增强 DTO,则创建一个 ViewModel。一个常见的场景是添加链接。 ViewModel 将 DTO 作为复杂属性引用也是可以的。

关于asp.net-mvc - Domain vs DTO vs ViewModel - 如何以及何时使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12874328/

相关文章:

entity-framework - 使用无参数构造函数记录?

entity-framework - Entity Framework : add property that don't map to database

wpf - 如何通过两个 View 模型传递对象? Wpf MVVM

asp.net-mvc - 使用 Ajax.ActionLink ASP.Net MVC 进行多个更新目标 ID

c# - 在 Html.ActionLink 中包含模型属性的语法是什么?

asp.net - 构建asp.net mvc网站时出错

c# - 具有日期范围的 Linq 查询不返回任何记录?

c# - 用于检查修改状态的数据类型或数据结构?

android - 每次如何在koin中创建viewModel的新实例

android - 如何生成具有临时 subview 的组合 View 模型?