【问题标题】:MVC Business Logic + DAL + Mapping ViewModel with EF ModelMVC 业务逻辑 + DAL + 映射 ViewModel 和 EF 模型
【发布时间】:2018-11-10 20:25:29
【问题描述】:

我开始开发一个应用程序,我想知道组织解决方案架构的最佳实践。

  1. 我应该使用 EF 类模型作为我的 ViewModel 吗?
  2. 是否应该将所有查询和数据库访问权限放入模型中?还是创建一个服务来管理所有 Db 问题?

我将 EF 与 DB First 一起使用,因为 db 已经开发完毕。

谢谢!

【问题讨论】:

标签: entity-framework model-view-controller orm data-access-layer


【解决方案1】:

那里有更完整的应用程序架构描述,但这里是 $.25 的描述。

  1. EF 类模型用于与数据存储进行通信
  2. 数据传输对象 (DTO) 是模块之间相互通信的方式 (WebAPI 到 MVC 等)
  3. ViewModel 提供您的 UI 所需的数据

查找与应用程序架构相关的“关注点分离”,它可以节省您的精力。通常,当您发现自己为自己画了一个角落时,开发人员会将这些实体用于双重用途,从而导致一些有趣的结果。如果你是“画家”,那就不好笑了。

另一方面,保留这些模型需要额外的努力,并且映射需要 CPU 周期。这是一个具体的例子:

WebAPI 访问 People 实体(EF 类)并映射到 PeopleDTO(不是所有字段,可能是附加信息)并将其返回给您的 MVC 控制器。 MVC 控制器采用 PeopleDTO 并将其与支持的查找表(更多 WebAPI 调用)合并,以创建 Razor 页面使用的 PeopleVM (ViewModel)。

在我刚刚概述的场景中,存在三种不同类型的 People 对象,但根据“层”的需要,每种对象都可能具有非常不同的内容。有很多工具可以减轻映射的痛苦。

清除?

【讨论】:

  • 清除!这是我担心的问题,如果我浪费 cpu 映射 dtos 的周期来创建 VM 或将包含子表的所有 de EF 模型发送到我的视图。但这正是我们一直在寻找的答案。
猜你喜欢
  • 2012-04-25
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
相关资源
最近更新 更多