程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net MVC並不僅僅只是Linq to SQL

Asp.net MVC並不僅僅只是Linq to SQL

編輯:關於ASP.NET

很多Asp.net的教程中的示例代碼使用的數據訪問方法是Linq to Sql或是Entity Framework。我在 www.asp.net的論壇上看到很多關於討論是否有其他替代的數據庫訪問方式,回答是:當然有。這篇文章 就講述了使用Ado.Net作為數據訪問層來實現一個典型的增刪查改程序。

由於是以練習作為目的,那我就不妨借用Spaanjaar’s 的N層構架文章(Building Layered Web Applications with Microsoft ASP.NET 2.0.)的構架方式。我強烈推薦你閱讀他的系列文章,如果嫌太 長起碼也得看完前兩部分,這樣就能對N-Layer構架有個基本的認識。N-Layer構架的三個關鍵層分別為: 業務對象層,業務邏輯層和數據訪問層。而其數據訪問層會幾乎不加改變的包含在本文的MVC項目中, Spaanjaar的文件詳細描述了各個層是如何組織的。這篇文章僅僅講述各個層所扮演的角色,但是不會深 入到代碼的細節中。

首先,我們來看Imar提供的程序,這是一個具有典型增刪查改的程序,這個程序允許用戶管理聯系人, 包括聯系人的地址,電話,email。它能增,刪,查,改任何實體。

程序內包括的實體有:ContactPersons, PhoneNumbers, Addresses EmailAddresses.他們都隸屬於程 序的業務對象(BO)層。上述的每一個類都包含可以獲取或者賦值的屬性,但並不包含任何方法。而所有 方法存放於業務邏輯層(BLL)中的對應類中。在業務對象層和業務邏輯層的實體和實體manger是一對一 的關系,在業務邏輯層中類包含的方法都會返回業務對象層(BO)的實例,或是實例集合,或者保存實例( 更新或是添加),或是刪除實例。業務邏輯層(BLL)中也可以包含一些業務規則驗證,安全性檢查的代 碼。但在本篇文章為了簡便起見,就不添加這些了。

最後一層是數據訪問層(DAL),同樣,DAL層的類也和業務邏輯層(BLL)內的類有著一對一的關系,在 BLL層的類中會調用相關DAL層中的方法。而在這些層中,只有DAL層需要知道利用什麼技術(linq,entity framework..)保存業務實體。在本例中,使用Sql Server Express數據庫和Ado.net。而這樣分層的思想 是如果你需要更換數據源(XML,oracle,更或者是Web Service甚至是Linq to Sql或者其他ORM框架), 因為DAL層給BLL層暴漏的方法的簽名是一致的,所以只需要更換DAL層即可。而為了保證所有DAL的實現有 著同樣的簽名,則利用接口即可。但我想或許是未來帖子中討論的話題了吧。

MVC構架

已經有很多優秀的文章中已經探討了MVC程序的構架,所以本篇文章就不再累述相關細節了。如果想要 了解更多,我推薦訪問Asp.net MVC官方站點. 簡單二代說,M代表Model,也是包含BO,BLL,DAL的地方,V 代表View,也是UI相關開發的部分,或者說是用戶看到的部分,C是 Controller的簡寫,也是控制用戶請 求與程序回復的部分。如果用戶點擊了一個指向特定地址的按鈕,請求會和Controller的 Action(類的 方法)進行匹配,而Action負責處理請求,並返回響應。通常情況下是一個新的View,或者是更新現有的 View。

下面用Visual Studio創建一個MVC應用程序並刪除默認的View和Controller,然後將Imar的程序中的 Bo,Bll和DAL復制到這個MVC程序的Model內,我還復制了響應的數據庫文件和Style.css。

我還做了一些其他的修改,把數據庫連接字符串添加到Web.Config中。除此之外,我還將復制過來的 代碼的命名空間做了響應的調整並把DAL層的代碼升級到了3.0.雖然這並不是必須的。做完這些,我按 Ctrl+Shift+F5來測試是否編譯成功。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved