DataContext是MVC中Model的一部分还是Controller的一部分?

Par*_*rma 3 model-view-controller datacontext asp.net-mvc separation-of-concerns

今天在 ASP.NET MVC 上工作了一段时间,
一直在解决一个理论问题,
在 MSDN 上浏览了一些示例代码,
我读到了这样的内容

public class SomeController()
{
 public ActionResult SomeAction(SomeModel model)
 {
   var dataContext = new SomeDataContext();
   //basic CRUD operations on data context
   //
 }
}
Run Code Online (Sandbox Code Playgroud)

这里数据库显然是通过控制器访问的,理论上是不正确的,
这个例子或者我对模型和控制器的定义有问题吗?需要刷新更新
:-
或者有可能每个地方都有问题MSDNModels和ViewModels被认为是平等的

ter*_*ško 5

介绍

MVC 设计模式相当古老。它最初是为 Smalltalk-80 应用程序定义的,当时“网络”是两个在大学之间发送 ping 的人。从那时起它已经发展了很多。

MVC 设计模式背后的核心原则是关注点分离。该模式将表示与业务逻辑分开。表示层主要包含视图、控制器、模板、视图模型和表示器(取决于您使用哪种 MVC 风格的模式),而业务逻辑则结束于模型层。

模型层虽然没有在模式中严格定义,但在 ASP.NET MVC 中由服务和服务使用的所有结构(包括模型对象,更广为人知的领域对象)组成。

关于这个问题

DataContext当您寻找基本的 MVC 教程时,在控制器中使用是很常见的。MVC 架构意味着大规模应用程序,在Hello-World示例中,完全实现的 MVC 架构看起来就像是臃肿。

为了简单起见,这些示例牺牲了代码分离。交互DataContext基本上是存储逻辑,这是模型层处理的任务之一。当在控制器中使用时,这意味着你的模型层已经开始在表示层中泄漏,最终会出现“胖控制器,瘦模型”的问题。

在现实世界的应用程序中,它将DataContext是处理模型层内持久性的结构的一部分。如果您选择手动编写它们,可能会作为数据映射器的一部分。

关于“更新”

模型(我想在这种情况下你指的是域/模型对象)来自与 ViewModel 完全不同的应用程序层。

顾名思义,在 MVVM 模式中,ViewModel 取代了 Controller。ViewModel从模型层获取数据,然后将其转换为可供View使用的方式。

当您无法完全控制视图或/和模型层的行为时,最好使用此模式(如果您确实使用 MVVM)。例如:如果您受雇为 SAP 构建替代前端,或者视图实际上是某种形式的硬件设备,需要特定类型的输入。