C# 为什么大多数ASP.NET MVC示例直接在表示层访问数据库?

C# 为什么大多数ASP.NET MVC示例直接在表示层访问数据库?,c#,asp.net,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc 3,Razor,最重要的是?我找到的关于如何设置ASP.NET MVC项目的示例是直接在控制器中访问数据库上下文 例如: public class MoviesController : Controller { private MovieDBContext db = new MovieDBContext(); // // GET: /Movies/ public ViewResult Index() { return View(db.Movies.To

最重要的是?我找到的关于如何设置ASP.NET MVC项目的示例是直接在控制器中访问数据库上下文

例如:

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

    //
    // GET: /Movies/

    public ViewResult Index()
    {
        return View(db.Movies.ToList());
    }
我还知道,至少在aspx视图引擎中有很多控件,您可以将它们作为数据源直接绑定到数据库中的表,以便它自动显示数据

对我来说,这感觉很奇怪,我希望在表示层和数据库之间有某种分离。某种业务层和/或数据层,在视图中使用数据之前,将数据从数据库映射到视图模型。仅仅是我,还是所有的例子都是这样,因为这样做更容易?是不是我错过了一些重大的收获?我想这会快一点,但感觉我不应该在数据库中使用与视图中相同的模型。我最终发现,在数据库模型与视图模型分离的地方,这种感觉更加正确。但这是一百个例子中的一个


你对此有何想法?

我理解你的担忧,因为我也有同样的担忧。很遗憾,大多数示例都没有使用视图模型。正因为如此,当人们开始实现一个与那些文章中看到的最简单的例子不同的实际应用程序时,他们正在苦苦挣扎


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

我理解你的担忧,因为我也有同样的担忧。很遗憾,大多数示例都没有使用视图模型。正因为如此,当人们开始实现一个与那些文章中看到的最简单的例子不同的实际应用程序时,他们正在苦苦挣扎


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

大多数MVC教程都会教你如何做,因为这是可以做到的,而且对控制器的解释通常在解释模型之前

以电影应用程序教程为例-


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

大多数MVC教程都会教您如何做,因为这是可以做到的,而且对控制器的解释通常在解释模型之前

以电影应用程序教程为例-


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

就是要让例子简单,集中在手头的主题上。

就是要让例子简单,集中在手头的主题上。

我想说。。。因为它们是MVC的例子。他们背后的想法和动机就是简单地说什么是MVC,什么不是。如果你想学习MVC,很可能你会找到这样的例子。如果您想了解如何在多个层中与对象交互以及如何编写应用程序体系结构,那么您应该显式地用谷歌搜索它。控制器不是表示层,视图是表示层。注意Hello World示例!这个例子来自ASP.NETMVC4的一个非常基础的教程。。。因为它们是MVC的例子。他们背后的想法和动机就是简单地说什么是MVC,什么不是。如果你想学习MVC,很可能你会找到这样的例子。如果您想了解如何在多个层中与对象交互以及如何编写应用程序体系结构,那么您应该显式地用谷歌搜索它。控制器不是表示层,视图是表示层。注意Hello World示例!这个例子是从ASP.NET MVC4的基础教程开始的。最大的问题是作者写的大多数文章只是为了解释这个概念,而忘记了解释如何在现实世界的应用程序中实现这个概念,即使我有时也会这样做。原因很明显。。写这样的文章需要经验和时间。@马克,我同意,但这样做很遗憾。最大的问题是作者写大多数文章只是为了解释概念,而忘记解释如何在实际应用程序中实现这个概念,即使我有时也会这样做。这个
原因显而易见。。写这样的文章需要经验和时间。@Mark我同意,但这样很遗憾。我认为这应该是一篇评论我认为这应该是一篇评论