c# - MVC 在 ViewModels 中使用 DTO 类
问题描述
例如,当使用实体框架代码优先时,是否建议在视图模型中使用 DTO 类?还是应该直接使用实体类?
我目前这样做是为了不必使用[NotMapped]
属性并在我的 DTO 上设置一些计算属性。
我想它还具有不必直接在实体类上应用验证注释的好处。
这个问题的原因是这是否是正确的方法。你觉得呢?你有没有什么想法?
解决方案
你在正确的道路上。绝对不要在 ViewModel 中使用 EF 模型。它创建了数据库和 UI 之间的耦合。
但是...在视图模型中使用 dto 可能会在您的 UI 与底层 api 不同时导致问题。
除非它是一个非常小的应用程序,否则我倾向于使用我编写的模型来制作 ViewModel,并使用 AutoMapper 之类的东西在 UI 模型和 DTO 之间传输数据。
您可以在后端使用相同的技术在 DTO 和 EF 模型之间传输数据。
这使 DTO 保持简单,因为它只有一项工作——在 api 级别传输数据。它既不知道也不关心 UI 或数据库。
推荐阅读
- function - 函数中的返回码和整体返回码
- python - 如何声明类属性的类型?
- node.js - 尝试在 Mocha 测试中调用服务器 URL 时出现 TypeError
- python - virtualenvwrapper 命令不可用
- sql - 如何将变量传递给视图中的子选择
- java - Android AudioFocus onAudioFocusChange 不监听变化
- google-people-api - 如何从 Google People API 接收电子邮件?
- python-3.x - Google Cloud Function / Python 3.7 / requirements.txt 使部署失败
- python - 谁能解释 for 循环中“范围”函数中存在的表达式?
- regex - 如何在正则表达式中选择 href 值?