首页 > 解决方案 > MVC 在 ViewModels 中使用 DTO 类

问题描述

例如,当使用实体框架代码优先时,是否建议在视图模型中使用 DTO 类?还是应该直接使用实体类?

我目前这样做是为了不必使用[NotMapped]属性并在我的 DTO 上设置一些计算属性。

我想它还具有不必直接在实体类上应用验证注释的好处。

这个问题的原因是这是否是正确的方法。你觉得呢?你有没有什么想法?

标签: c#asp.net-mvcentity-framework

解决方案


你在正确的道路上。绝对不要在 ViewModel 中使用 EF 模型。它创建了数据库和 UI 之间的耦合。

但是...在视图模型中使用 dto 可能会在您的 UI 与底层 api 不同时导致问题。

除非它是一个非常小的应用程序,否则我倾向于使用我编写的模型来制作 ViewModel,并使用 AutoMapper 之类的东西在 UI 模型和 DTO 之间传输数据。

您可以在后端使用相同的技术在 DTO 和 EF 模型之间传输数据。

这使 DTO 保持简单,因为它只有一项工作——在 api 级别传输数据。它既不知道也不关心 UI 或数据库。


推荐阅读