2011年11月15日 星期二

ASP.NET MVC 與 Linq to SQL 結合

ASP.NET MVC 資料庫應用可以使用微軟的新技術,Linq To Sql。

可以先參考 << 極意之道次世代 .NET Framework 3.5資料庫開發聖典ASP.NET篇,黃忠成,2008 >> 這本書,書內詳細說明 Linq To Sql 在 Visual Studio 2008 如何開始使用、語法、結合、....等等,有興趣的鄉民大可去參考這本書,這裡就不另贅述。

這裡是使用微軟的範例資料庫: northwind (北風)。

說著說著,我就已經弄好 Linq To Sql 類別,我抓了三個資料表,分別是 Products、Orders、Order_Details。



以下實作方法參考:初學ASP.NET MVC 學習筆記(六)-包裝Model

首先,我只要顯示出 Products 資料表內的資料,先建立一個資料夾在根目錄,我命名為 MyData,底下增一個類別為 Products.cs 檔案,大概內容為:

using MvcTest.Models; // 必要加入參考

namespace MvcTest.MyData
{
    public class Products
    {
        public IQueryable<Models.Products> _Products { get; set; }
    }
}
接著在 Controllers\HomeController.cs 程式碼中加入一些語法,因為是在 Index 顯示,所以在 Index 類別動點手腳:

using MvcTest.Models;
using MvcTest.MyData;

namespace MvcTest.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        private NorthwindDataContext db = new NorthwindDataContext();
        private MyData.Products p = new MyData.Products();


        public HomeController()
        {
            ...
        }

        public ActionResult Index()
        {
            p.Products = from d in db.Products select d;

            return View(p);
        }

        ......
    }
}
我特別在類別上註記它來自於哪一個資料夾中,目的是怕命名的名稱會與 Linq To Sql 類別名稱相同,所以特此註記。

最後在 Index.aspx 程式碼中,可以是用類似 C# 程是語言的方式將 Products 的資料條列出來:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage<MvcTest.MyData.Products>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<table>
    <% foreach (var item in Model._Products)
       { %>
    <tr>
        <td>
            <%= Html.Encode(item.ProductID) %>
        </td>
        <td>
            <%= Html.Encode(item.ProductName) %>
        </td>
    </tr>
    <% } %>
</table>
</asp:Content>

最後執行頁面如下:

回目錄
回首頁




沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...