4.1 Model 與資料庫

ASP.NET MVC 實務精要|第四章 串接關聯式資料庫 - SQL Server

這一章開始,我們要利用資料庫儲存預先安排的固定書籍資料,示範如何利用第一章所討論的ASP.NET MVC 技巧,建立一個簡單的商品資料維護案例。ASP.NET MVC 允許你透過各種不同的方式連線特定資料庫然後進行資料維護操作,儘管如此,本書所要討論的,大致都會專注在在 Entity Framework 的 Code First 機制,這也是建構新專案最推薦的方式,緊接著我們利用一個簡單的範例進行相關的實作說明,後續再針對各種理論細節作進一步的說明。



為了完整說明 ASP.NET MVC 與 SQL Server 資料庫互動功能的建立過程,我們選擇建立一個最簡單的空MVC專案作示範,將新專案命名為DBModelDemo。



牽涉資料庫的操作採用 Entity Framework 機制,因此首先於專案下的參考節點按一下「管理NubGet套件」開啟設定畫面。



於右上角輸入Entity Framework 關鍵字進行搜尋,並在找到的 EntityFramework 項目上按一下安裝按鈕進入安裝程序。



完成安裝之後可以看到Entity Framework 相關元件已被加入參考清單中,現在我們可以開始撰寫資料庫編輯程式碼。以下列舉本章作為示範用的Product資料表結構。

欄位名稱
格式
說明
ID
int
商品項目識別編號。
Name
string
商品項目名稱。
Description
string
商品項目說明描述。
Price
decimal
商品價格
CreatedOn
date
商品資料建立日期

開啟專案中的Model資料夾,新增一個類別檔案 Product.cs,並且填入以下的程式碼:

public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public DateTime CreatedOn { get; set; }
}

Product 類別對應至商品資料表的欄位結構,每一個屬性對應資料表中的同名欄位。接下來於Model 資料夾進一步建立另外一個類別檔案 KTStoreContext.cs,這個檔案負責串接資料庫所需的連線識別設定,輸入以的內容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace DBModelDemo.Models
{
    public class KTStore:DbContext
    {
        public DbSet<Product> Product { get; set; }
    }
}

KTStore 必須引用 System.Data.Entity 命名空間以支援所需的類別。令其繼承 DbContext ,並新增一組Product屬性,設定其回傳值為 DbSet ,這是一個Product類別型態的DbSet物件,表示所要取回的商品資料內容對應物件。現在可以開始進行資料的存取操作了,開啟 Controllers 資料夾,於其中新增一個空白控制器並且命名為 HomeController.cs,針對其中的預設動作方法Index() 進行擴充,結果內容如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace DBModelDemo.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            KTStore ktStore = new KTStore();
            ViewBag.Count = ktStore.Product.Count();
            return View();
        }
    }
}

建立KTStore物件類別實體,然後引用其中的 Product 屬性取得資料表Product的資料內容,引用Count() 回傳內含的資料筆數,將其設定給 ViewBag.Count 以方便於檢視中呈現取得的資料筆數。完成之後針對 Index() 動作方法新增檢視Index.cshtml,於其中配置ViewBag.Count內容如下:


@{
    ViewBag.Title = "Index";
}
<h2>Index</h2>
@ViewBag.Count

這段程式碼將Index() 動作方法中取得的資料筆數呈現在畫面上,於瀏覽器畫面顯示以下的結果:



這一章我們根據所要操作的資料表建立一個對應的類別,並且透過Entity Framework 機制,於網頁第一次執行時,在預設的 SQL Server 資料庫中以此類別結構為基礎建立對應的資料表,並且取得資料表中的資料筆數,由於初始建立的資料表不會有任何資料,因此回傳值為 0 。

這是非常簡單的範例,不過其中還有諸多需要討論的細節,也是瞭解 Entity Framework 重要的關鍵,下一節進一步作討論。


沒有留言: