簡體   English   中英

為什么大多數ASP.NET MVC示例都直接在表示層中訪問數據庫?

[英]Why do most ASP.NET MVC examples access the database directly in the presentation layer?

我發現的有關如何設置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)在關於限制抽象的主題上寫了一篇很棒的博客文章

大多數MVC教程僅因為可以完成操作,而教您如何進行操作,並且通常在解釋模型之前先對Controller進行解釋。

以電影應用程序教程為例-http: //www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3

這些教程中的大多數都首先教您如何在視圖上使用顯示數據,然后使用控制器在視圖中顯示,然后將數據輸入模型並通過定向到視圖。 控制器。

這是為了使示例簡單易行,並專注於手頭的主題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM