返回“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 的產品