本篇內容主要講解“基于LINQ to SQL的WEB開發(fā)三層架構怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“基于LINQ to SQL的WEB開發(fā)三層架構怎么實現(xiàn)”吧!
10多年的凌河網(wǎng)站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整凌河建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“凌河網(wǎng)站設計”,“凌河網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
程序員不再受限于復雜的SQL腳本,而可以一種近乎***的方式來搭建自己的面向對象型軟件 系統(tǒng),這種方式就是將數(shù)據(jù)完全對象化,將SQL語句封裝到底層,由framework來完成,程序員 只需面向數(shù)據(jù)庫對象來編程,從另一種意義上來說,是把數(shù)據(jù)也程序化了。
LINQ的這種開發(fā)模式也改變了系統(tǒng)架構的搭建方式,在以往的系統(tǒng)中,數(shù)據(jù)訪問層DAL 要訪問數(shù)據(jù)字段,業(yè)務邏輯層BLL要得到數(shù)據(jù)都需要通過數(shù)據(jù)模型層Model來處理,而LINQ和 VS2008為我們帶來了一種全新的自動化方式生成數(shù)據(jù)模型層,這就是dbml(Database Mark Language。數(shù)據(jù)庫描述語言,是一種xml格式的文檔,用來描述數(shù)據(jù)庫),有了它我們就不需要 去找那些第三方的代碼生成工具,只需要把數(shù)據(jù)表拖拽到設計器中,如下圖所示,DONET便為我 們做好了一切。
完成拖拽操作后,VS會自動生成一個數(shù)據(jù)模型層的dbml文件和相關的類文件。這樣我們省去 了數(shù)據(jù)模型層的搭建,系統(tǒng)的架構也就有所不同,以下用一個例子簡單的講一下該架構模型。
為了完成這個架構,我們首先要創(chuàng)建一個WEB APPLICATION項目,在新建項目窗口選擇 “ASP.NET WEB應用程序”,為它取一個名字,并確定。
接下來,在解決方案資源管理器中再添加一個類庫項目,取名為DAL,如下圖:
再使用同樣的方法在解決方案資源管理器中添加一個類庫項目,取名為BLL,這樣我們的基 礎架構搭建完成,此時我們的解決方案資源管理器應該是如下結構。
此時,我們先從DAL項目入手,在DAL項目中,添加一個LINQ TO SQL類,取名為Northwind( 為了方便起見,此項目使用SQL SERVER2005中的Northwind示例數(shù)據(jù)庫),雙擊新建立的 Northwind.dbml文件,然后打開“服務器資源管理器”,建立與數(shù)據(jù)的連接,并從Northwind數(shù) 據(jù)庫中,將Employees表拖拽到Northwind.dbml文件的可視化設計器中。
初始的Northwind.dbml文件代碼如下:
#pragma warning disable 1591 //-------------------------------------- ---------------------------------------- // // 此代碼由 工具生成。 // 運行時版本:2.0.50727.3053 // // 對此文件的更改可能會 導致不正確的行為,并且如果 // 重新生成代碼,這些更改將會丟失。 // //----------------------------------------------------------------- ------------- namespace DAL { using System.Data.Linq; using System.Data.Linq.Mapping; using System.Data; using System.Collections.Generic; using System.Reflection; using System.Linq; using System.Linq.Expressions; using System.ComponentModel; using System; [System.Data.Linq.Mapping.DatabaseAttribute(Name="Northwind")] public partial class NorthwindDataContext : System.Data.Linq.DataContext { private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource(); #region Extensibility Method Definitions partial void OnCreated(); partial void InsertEmployees(Employees instance); partial void UpdateEmployees(Employees instance); partial void DeleteEmployees(Employees instance); #endregion public NorthwindDataContext() : base (global::DAL.Properties.Settings.Default.NorthwindConnectionString, mappingSource) { OnCreated(); } public NorthwindDataContext(string connection) : base(connection, mappingSource) { OnCreated(); } public NorthwindDataContext(System.Data.IDbConnection connection) : base(connection, mappingSource) { OnCreated(); } public NorthwindDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base(connection, mappingSource) { OnCreated(); } public NorthwindDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base(connection, mappingSource) { OnCreated(); } public System.Data.Linq.Table
從中可以看到,這里本質上就是以前的數(shù)據(jù)模型層,將數(shù)據(jù)整個對象化了,為了層之間的訪 問方便,我們將改類的命名空間改為Auto.DAL,并將NorthwindDataContent類的***個構造函 數(shù)代碼修改如下,這樣修改主要是為了統(tǒng)一數(shù)據(jù)庫連接字符串的位置,因為dbml文件在生成后 會附帶生成一個app.config文件,用來存放連接字符串,而我們要把連接字符串統(tǒng)一放到 web.config中。(要訪問web.config文件,需要為DAL項目添加對System.Configuration的應用 )
public NorthwindDataContext() : base (ConfigurationManager.ConnectionStrings ["NorthwindConnectionString"].ConnectionString, mappingSource) { OnCreated (); } |
完成前面的操作以后,開始建立數(shù)據(jù)訪問層的類文件,這時,先在 DAL項目下添加一個類文件,取名為DALEmployees.cs,其代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Auto.DAL { public class DALEmployees { /// NorthwindDataContext db = new NorthwindDataContext(); /// ///[object Object]城 市地址 /// public IQueryable
這個數(shù)據(jù)訪問層中只建立了一個用來根據(jù)城市地址獲取Employee數(shù)據(jù)的方法,它內部執(zhí)行一 段LINQ,返回一個IQueryable型的結果,由于LINQ后期編譯的特性,這個結果只有在程序運行 后才會返回數(shù)據(jù)集。
接著,建立業(yè)務邏輯層,在BLL項目中,添加一個類文件,取名為BLLEmployees.cs,其代碼 如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Auto.DAL; namespace Auto.BLL { public class BLLEmployees { /// ///[object Object]城市名 /// public IQueryable
這段代碼完成了業(yè)務邏輯層的定義,建立了一個和數(shù)據(jù)訪問層的同名方法GetList,用來傳 送城市名稱參數(shù)。***,在WEB Application項目中,添加對BLL層的應用,并在Default.aspx 頁面中添加一個GridView控件用來顯示數(shù)據(jù),Default.aspx.cs的代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Auto.BLL; namespace WebApplication2 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GetList("London"); }} /// ///[object Object]城市名稱 private void GetList(string strCity) { //執(zhí)行業(yè)務邏輯層的方法 BLLEmployees bl = new BLLEmployees(); //綁 定到GridView1控件 GridView1.DataSource = bl.GetList (strCity); GridView1.DataBind(); }}} |
完成后,執(zhí)行程序,便可得到相關數(shù)據(jù),整個程序的結構如下:
到此,相信大家對“基于LINQ to SQL的WEB開發(fā)三層架構怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!