溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

發(fā)布時間:2021-12-02 09:54:21 來源:億速云 閱讀:122 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)”吧!

程序員不再受限于復(fù)雜的SQL腳本,而可以一種近乎***的方式來搭建自己的面向?qū)ο笮蛙浖?系統(tǒng),這種方式就是將數(shù)據(jù)完全對象化,將SQL語句封裝到底層,由framework來完成,程序員 只需面向數(shù)據(jù)庫對象來編程,從另一種意義上來說,是把數(shù)據(jù)也程序化了。

LINQ的這種開發(fā)模式也改變了系統(tǒng)架構(gòu)的搭建方式,在以往的系統(tǒng)中,數(shù)據(jù)訪問層DAL 要訪問數(shù)據(jù)字段,業(yè)務(wù)邏輯層BLL要得到數(shù)據(jù)都需要通過數(shù)據(jù)模型層Model來處理,而LINQ和 VS2008為我們帶來了一種全新的自動化方式生成數(shù)據(jù)模型層,這就是dbml(Database Mark Language。數(shù)據(jù)庫描述語言,是一種xml格式的文檔,用來描述數(shù)據(jù)庫),有了它我們就不需要 去找那些第三方的代碼生成工具,只需要把數(shù)據(jù)表拖拽到設(shè)計器中,如下圖所示,DONET便為我 們做好了一切。

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

完成拖拽操作后,VS會自動生成一個數(shù)據(jù)模型層的dbml文件和相關(guān)的類文件。這樣我們省去 了數(shù)據(jù)模型層的搭建,系統(tǒng)的架構(gòu)也就有所不同,以下用一個例子簡單的講一下該架構(gòu)模型。

為了完成這個架構(gòu),我們首先要創(chuàng)建一個WEB APPLICATION項目,在新建項目窗口選擇 “ASP.NET WEB應(yīng)用程序”,為它取一個名字,并確定。

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

接下來,在解決方案資源管理器中再添加一個類庫項目,取名為DAL,如下圖:

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

再使用同樣的方法在解決方案資源管理器中添加一個類庫項目,取名為BLL,這樣我們的基 礎(chǔ)架構(gòu)搭建完成,此時我們的解決方案資源管理器應(yīng)該是如下結(jié)構(gòu)。

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

此時,我們先從DAL項目入手,在DAL項目中,添加一個LINQ TO SQL類,取名為Northwind( 為了方便起見,此項目使用SQL SERVER2005中的Northwind示例數(shù)據(jù)庫),雙擊新建立的 Northwind.dbml文件,然后打開“服務(wù)器資源管理器”,建立與數(shù)據(jù)的連接,并從Northwind數(shù) 據(jù)庫中,將Employees表拖拽到Northwind.dbml文件的可視化設(shè)計器中。

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

初始的Northwind.dbml文件代碼如下:

#pragma warning disable 1591
//--------------------------------------

----------------------------------------
// 
//     此代碼由

工具生成。
//     運行時版本:2.0.50727.3053
//
//     對此文件的更改可能會

導(dǎo)致不正確的行為,并且如果
//     重新生成代碼,這些更改將會丟失。
//
//-----------------------------------------------------------------

-------------
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

從中可以看到,這里本質(zhì)上就是以前的數(shù)據(jù)模型層,將數(shù)據(jù)整個對象化了,為了層之間的訪 問方便,我們將改類的命名空間改為Auto.DAL,并將NorthwindDataContent類的***個構(gòu)造函 數(shù)代碼修改如下,這樣修改主要是為了統(tǒng)一數(shù)據(jù)庫連接字符串的位置,因為dbml文件在生成后 會附帶生成一個app.config文件,用來存放連接字符串,而我們要把連接字符串統(tǒng)一放到 web.config中。(要訪問web.config文件,需要為DAL項目添加對System.Configuration的應(yīng)用 )

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ù)的方法,它內(nèi)部執(zhí)行一 段LINQ,返回一個IQueryable型的結(jié)果,由于LINQ后期編譯的特性,這個結(jié)果只有在程序運行 后才會返回數(shù)據(jù)集。

接著,建立業(yè)務(wù)邏輯層,在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è)務(wù)邏輯層的定義,建立了一個和數(shù)據(jù)訪問層的同名方法GetList,用來傳 送城市名稱參數(shù)。***,在WEB Application項目中,添加對BLL層的應(yīng)用,并在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è)務(wù)邏輯層的方法
BLLEmployees bl = new BLLEmployees();
//綁 定到GridView1控件
GridView1.DataSource = bl.GetList (strCity);
GridView1.DataBind();
}}}

完成后,執(zhí)行程序,便可得到相關(guān)數(shù)據(jù),整個程序的結(jié)構(gòu)如下:

基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)

到此,相信大家對“基于LINQ to SQL的WEB開發(fā)三層架構(gòu)怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI