1

我找到的关于如何设置 ASP.NET MVC 项目的大多数(几乎全部?)示例都是直接在控制器中访问数据库上下文。

这样的例子:

public class MoviesController : Controller
{
    private MovieDBContext db = new MovieDBContext();

    //
    // GET: /Movies/

    public ViewResult Index()
    {
        return View(db.Movies.ToList());
    }

我也知道有很多控件(至少对于aspx视图引擎)可以直接绑定到数据库中的一个表作为数据源,让它自动显示数据。

对我来说,这感觉很奇怪,我想在表示层和数据库之间进行某种分离。在视图中使用它们之前,将数据从数据库映射到视图模型的某种业务层和/或数据层。只是我还是这些例子都是这样的,因为它更容易做到?我错过了一些巨大的收获吗?我想它有点快,但感觉就像我不应该在我的数据库中使用与我的视图中相同的模型。我终于找到了一个感觉更正确的示例,其中数据库模型与视图模型分离。但这是一百个例子。

您对此有何看法?

4

3 回答 3

3

我理解你的担忧,因为我也有同样的担忧。很遗憾,大多数示例都没有使用视图模型。正因为如此,当人们开始实现与那些文章中看到的最琐碎示例不同的实际应用程序时,他们会遇到很多困难。

至于直接从控制器访问数据库,我认为这不是一个大问题。如果您不需要它们并且它们不会为您的应用程序带来任何额外的价值,那么您真的不需要实现很多抽象层。Jimmy Bogard 写了一篇关于限制抽象的优秀博客文章。

于 2012-09-26T09:02:17.567 回答
1

大多数 MVC 教程教你怎么做只是因为它可以做到,而且对 Controller 的解释通常在解释 Model 之前。

以电影应用教程为例 - http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3

这些教程中的大多数首先教您如何在视图上显示数据,然后使用控制器在视图中显示,然后将数据输入模型并通过指向视图。控制器。

于 2012-09-26T09:02:20.863 回答
1

这是为了使示例保持简单并专注于手头的主题。

于 2012-09-26T09:23:12.680 回答