程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Scott Mitchell的ASP.NET 2.0數據教程之二:創建一個業務邏輯層

Scott Mitchell的ASP.NET 2.0數據教程之二:創建一個業務邏輯層

編輯:關於ASP.NET

返回“ASP.NET 2.0數據教程目錄”

導言

本教程的第一節所描述的數據訪問層(Data Access Layer,以下 簡稱為DAL)已經清晰地將表示邏輯與數據訪問邏輯區分開了。不過,即使DAL將 數據訪問的細節從表示層中分離出來了,可它卻不能處理任何的業務規則。比如 說,我們可能不希望產品表中那些被標記為“停用”的產品的“ 分類編號”或“供應商編號”被更新;我們還可能需要應用一些 資歷規則,比如說我們都不希望被比自己的資歷還要淺的人管理。另外一個比較 常見的情況就是授權,比如說只有那些具有特殊權限的用戶可以刪除產品或是更 改單價。

我們其實可以將業務邏輯層(Business Logic Layer,以下簡稱 BLL)看作是在數據訪問層和表示層之間進行數據交換的橋梁,在這個章節中,我 們將討論一下如何將這些業務規則集成到一個BLL中。需要說明的是,在一個實際 的應用程序中,BLL都是以類庫(Class Library)的形式來實現的,不過為了簡 化工程的結構,在本教程中我們將BLL實現為App_Code文件夾中的一系列的類。圖 一向我們展示了表示層、BLL以及DAL三者之間的結構關系。

圖一:BLL將表示層與DAL隔開了,並且加入了業務規則

第一步:創建BLL 類

我們的BLL由4個類組成,每一個BLL類都對應DAL中的一個TableAdapter ,它們都從各自的TableAdapter中得到讀取、插入、修改以及刪除等方法以應用 合適的業務規則。

為了更加清晰的區分DAL和BLL的類,我們在App_Code文 件夾中建立兩個子文件夾,分別命名為DAL和BLL。你僅僅需要在解決方案浏覽器 (Solution Explorer)中右鍵點擊App_Code文件夾,並選擇新建文件夾(New Folder),就可以創建新的子文件夾了。建好了這兩個文件夾之後,把第一節中 所創建的類型化數據集(Typed DataSet)移到DAL文件夾中。

然後,在 BLL文件夾中創建4個類文件。同樣,你僅僅需要在解決方案浏覽器(Solution Explorer)中右鍵點擊BLL文件夾,並選擇新建項目(New Item),然後在彈出的 對話框中選擇類模板(Class template)就可以創建新的類文件了。將這四個文 件分別命名為ProductsBLL、CategoriesBLL、SuppliersBLL以及EmployeesBLL。

圖二:在BLL文件夾中添加4個新的類

接下來,讓我們來給這些新建的類加 上一些方法,簡單的將第一節中的TableAdapter中的那些方法包裝起來就行了。 現在,這些方法將只能直接使用DAL中的那些方法,我們等會再來給他們加上一些 業務邏輯。

注意:如果你使用的是Visual Studio 標准版或以上版本(也 就是說,你不是用的Visual Web Developer),那麼你還可以使用Class Designer來可視化的設計你的類。你可以在Class Designer Blog上得到關於 Visual Studio的這項新功能的詳細信息。

在ProductsBLL類中,我們一共 需要為其添加7個方法:

·GetProducts() – 返回所有的產 品

·GetProductByProductID(productID) – 返回指定 ProductID的產品

·GetProductsByCategoryID(categoryID) –返回指定分類的產品

·GetProductsBySupplier (supplierID) –返回指定供應商的產品

·AddProduct (productName, supplierID, categoryID, quantityPerUnit, unitPrice, unitsInStock, unitsOnOrder, reorderLevel, discontinued) – 向數據 庫中添加一條產品信息,並返回新添加的產品的 ProductID

·UpdateProduct(productName, supplierID, categoryID, quantityPerUnit, unitPrice, unitsInStock, unitsOnOrder, reorderLevel, discontinued, productID) – 更新一個數據庫中已經存在 的產品,如果剛好更新了一條記錄,則返回true,否則返回 false

·DeleteProduct(productID) – 刪除指定ProductID 的產品

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