国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ASP.NET 2.0數據教程:給BLL類添加業務規則

開發 后端
本文主要介紹了asp.net 2.0數據操作中的業務邏輯層的第四步:給BLL類添加業務規則。

除了字段級的驗證,可能還有一些不能在單個列中表示的包含不同實體或概念的更高級的業務規則,比如:

·         如果一個產品被標記為“停用”,那么它的單價就不能被修改

·         一個雇員的居住地必須與他(她)的主管的居住地相同

·         如果某個產品是某供應商***提供的產品,那么這個產品就不能被標記為“停用”

ASP.NET 20.中,BLL類應該保證始終都驗證應用程序的業務規則。這些驗證可以直接的添加到應用他們的方法中。

想象一下,我們的業務規則表明了如果一個產品是給定的供應商的***產品,那么它就不能被標記為“停用”。也就是說,如果產品X是我們從供應商Y處購買的***一個產品,那么我們就不能將X標記為停用;然而,如果供應商Y提供給我們的一共有3樣產品,分別是A、B和C,那么我們可以將其中任何一個或者三個全部都標記為“停用”。挺奇怪的業務規則,是吧?但是商業上的規則通常就是跟我們平常的感覺不太一樣。

要在UpdateProducts方法中應用這個業務規則,那么我們就應該先檢查Discontinued是否被設置為true。假如是這樣的話,那么我們應該先調用GetProductsBySupplierID來看看我們從這個供應商處一共購買了多少產品。如果我們僅僅從這個供應商處購買了這一個產品,那么我們就拋出一個ApplicationException。

  1. public bool UpdateProduct(string productName, int? supplierID, int? categoryID, string quantityPerUnit,  
  2.                               decimal? unitPrice, short? unitsInStock, short? unitsOnOrder, short? reorderLevel,  
  3.                               bool discontinued, int productID)  
  4. {  
  5.         Northwind.ProductsDataTable products = Adapter.GetProductByProductID(productID);  
  6.         if (products.Count == 0)  
  7.             // 沒有找到匹配項,返回false  
  8.             return false;  
  9.  
  10.         Northwind.ProductsRow product = products[0];  
  11.  
  12.         // 業務規則檢查 – 不能停用某供應商所提供的***一個產品  
  13.         if (discontinued)  
  14.         {  
  15.             // 獲取我們從這個供應商處獲得的所有產品  
  16.             Northwind.ProductsDataTable productsBySupplier = Adapter.GetProductsBySupplierID(product.SupplierID);  
  17.  
  18.             if (productsBySupplier.Count == 1)  
  19.                 // 這是我們從這個供應商處獲得的***一個產品  
  20.                 throw new ApplicationException("You cannot mark a product as discontinued if its the only product purchased from a supplier");  
  21.         }  
  22.  
  23.         product.ProductName = productName;  
  24.         if (supplierID == null) product.SetSupplierIDNull(); else product.SupplierID = supplierID.Value;  
  25.         if (categoryID == null) product.SetCategoryIDNull(); else product.CategoryID = categoryID.Value;  
  26.         if (quantityPerUnit == null) product.SetQuantityPerUnitNull(); else product.QuantityPerUnit = quantityPerUnit;  
  27.         if (unitPrice == null) product.SetUnitPriceNull(); else product.UnitPrice = unitPrice.Value;  
  28.         if (unitsInStock == null) product.SetUnitsInStockNull(); else product.UnitsInStock = unitsInStock.Value;  
  29.         if (unitsOnOrder == null) product.SetUnitsOnOrderNull(); else product.UnitsOnOrder = unitsOnOrder.Value;  
  30.         if (reorderLevel == null) product.SetReorderLevelNull(); else product.ReorderLevel = reorderLevel.Value;  
  31.         product.Discontinued = discontinued;  
  32.  
  33.         // 更新產品記錄  
  34.         int rowsAffected = Adapter.Update(product);  
  35.  
  36.         // 如果剛好更新了一條記錄,則返回true,否則返回false  
  37.         return rowsAffected == 1;  
  38. }  

在表示層中響應驗證錯誤

當我們從表示層中調用BLL類時,我們可以決定是否要處理某個可能會被拋出的異常或者讓它直接拋給ASP.NET(這樣將會引發HttpApplication的出錯事件)。在使用BLL類的時候,如果要以編程的方式處理一個異常,我們可以使用try...catch塊,就像下面的示例一樣:

  1. ProductsBLL productLogic = new ProductsBLL();  
  2.    
  3.  // 更新ProductID為1的產品信息  
  4.  try 
  5.  {  
  6.      // 這個操作將會失敗,因為我們試圖使用一個小于0的UnitPrice  
  7.      productLogic.UpdateProduct("Scott's Tea", 1, 1, null, -14m, 10, nullnullfalse, 1);  
  8.  }  
  9.  catch (ArgumentException ae)  
  10.  {  
  11.      Response.Write("There was a problem: " + ae.Message);  
  12.  }  

我們將在后面的教程中看到,當通過一個數據Web控件(data Web Control)來進行插入、修改或刪除操作數據時,處理從BLL中拋出的異常可以直接在一個Event Handler中進行,而不需要使用try…catch塊來包裝代碼。

總結

一個具有良好架構的應用程序都擁有清晰的層次結構,每一個層次都封裝了一個特定的角色。在本教程的***篇中,我們用類型化數據集創建了一個數據訪問層;這一篇中,我們又建立了一個業務邏輯層,它由App_Code中一系列的類構成,并調用DAL中相應的方法。BLL類為我們的應用程序實現了字段級和業務級的邏輯。除了創建一個獨立的BLL,就像我們在本節中所做的那樣,另外一個選擇是使用partial類來擴展TableAdapter中的方法。然而,使用這個技術并不能使我們可以重寫已經存在的方法,也不能將我們的DAL和BLL分開得足夠清晰。

完成了DAL和BLL之后,我們就準備開始處理表示層了。在下一個教程中,我們將簡單的介紹一些數據訪問的主題,并為整個教程定義一個一致的頁面呈現。

【編輯推薦】

  1. 如何在IIS6.0中部署asp.net mvc程序
  2. 用Winform傻瓜式搭建asp.net mvc框架
  3. ASP.NET Session失效的編程思路
  4. ASP.NET Session 狀態的存儲
  5. 了解ASP.NET Web應用程序模型

責任編輯:book05 來源: 博客園
相關推薦

2009-07-24 12:41:21

BLL類

2009-07-24 13:07:59

BLL類

2009-07-24 16:55:53

添加aspx頁面

2009-07-27 09:35:57

業務邏輯層

2009-07-24 13:08:52

DataRowASP.NET 2.0

2009-07-24 14:23:16

定制編碼DAL

2009-07-27 03:21:00

breadcrumb導

2009-07-24 17:08:31

添加站點地圖asp.net

2009-07-27 09:28:55

TableAdapte

2009-07-27 03:23:00

Default.asp

2009-07-24 13:45:28

添加參數化

2009-07-27 08:51:24

ObjectDataS

2009-07-24 17:15:52

SiteMapData

2009-07-27 16:09:05

GridView顯示數

2009-07-27 16:22:54

GridView選擇行

2009-07-24 16:37:04

創建母版頁asp.net 2.0

2009-07-27 09:01:44

ObjectDataS

2009-07-24 13:25:43

創建數據訪問層

2010-06-25 08:51:46

ASP.NET MVC

2009-07-27 09:39:04

SelectMetho
點贊
收藏

51CTO技術棧公眾號

亚洲大片在线观看| 婷婷免费在线观看| 窝窝九色成人影院| 久久综合影视| 日韩av在线一区二区| 国产精品一区二区久久久| 日韩精品一页| 亚洲男人7777| 欧美videosex性欧美黑吊| 欧美三级电影在线观看| 天海翼女教师无删减版电影| youjizz国产精品| 蜜臀av色欲a片无码精品一区| 久久精品国产99国产| 一区二区三区视频在线播放| 日韩avvvv在线播放| 欧美精品欧美精品| 久久国产福利| 日韩欧美亚洲日产国产| 99视频在线精品国自产拍免费观看| 亚洲自拍在线观看| 欧美精品一卡| 久久涩涩网站| 日韩电影免费在线看| 亚洲成人a**址| 国产精品一区二区三区99| 久久亚洲精品无码va白人极品| 国产成人8x视频一区二区| 男女激情无遮挡| 国产欧美一区二区在线| 国产a级网站| 色偷偷88欧美精品久久久| www黄在线观看| 亚洲国产精品999| 国产综合色在线观看| 久久久久久久影院| 日韩专区精品| 国产精品yjizz| 韩国v欧美v日本v亚洲v| 国产精品沙发午睡系列| 综合久久给合久久狠狠狠97色| 中国国产一级毛片| 欧美喷潮久久久xxxxx| 偷拍精品精品一区二区三区| 国外成人性视频| 欧美福利专区| 亚洲一区 在线播放| 国产精品网友自拍| 国产一区二区三区福利| 亚洲国产一区二区三区四区| 亚洲图色一区二区三区| 成人av免费在线看| 国产在线精品一区二区不卡了| 免费看国产曰批40分钟| 亚洲欧洲一区二区三区| 成人精品一区二区三区免费 | 波多野结衣久久| www.日韩.com| 欧美电影免费观看高清| 欧美精品与人动性物交免费看| 国产精品一区二区不卡| 理论片鲁丝二区爱情网| 欧美成人性战久久| 成人性生交大片免费看中文视频| 久久久久久网址| 亚洲大片av| 久久久精品在线视频| 91久久精品一区二区三区| 国产成人午夜性a一级毛片| 国产精品久久久久久婷婷天堂| 石原莉奈在线亚洲三区| 啊啊啊国产视频| 在线播放日韩导航| 国产精品极品国产中出| 国产伦精品一区二区三区免| 99在线精品免费| 韩日视频在线| 九九热精品视频国产| 亚洲免费大片| 黑人巨大精品欧美一区二区奶水| 亚洲国产精品专区久久| 青青草91久久久久久久久| 少妇高潮大叫好爽喷水| 精品高清美女精品国产区| www欧美在线观看| 欧美一区二区三区成人久久片| 国产精品国产三级国产aⅴ入口| 爱看av在线| 亚洲字幕一区二区| 国产精品免费免费| 亚洲日本网址| 亚洲精品一区二区三区蜜桃久| 亚洲国产中文字幕在线视频综合| 国产91在线播放精品| 狠狠综合久久av| 中文字幕亚洲在| 久久精品女人天堂av免费观看| 精品国产乱码久久久久久108| 国产高清视频色在线www| 国产精品亚洲欧美导航| 综合久久一区| 一区二区三区日本久久久 | 国产iv一区二区三区| 成年网站在线| 国产精品jizz在线观看麻豆| 国产suv精品一区二区6| 在线h片观看| 成人欧美一区二区三区在线| 亚洲国产精品av| 免费电影日韩网站| 日韩精彩视频| 欧美日韩国产精选| 91影院成人| 黄色av资源| 91精品91久久久久久| 2021中文字幕一区亚洲| 欧美性片在线观看| 日本在线观看一区二区| 色婷婷综合五月| 久久亚洲专区| 男人的天堂网av| 欧美怡春院一区二区三区| 91视频国产资源| 久久精品黄色| av日韩一区二区三区| 国产亚洲精品日韩| 国产伦精一区二区三区| 免费观看亚洲| 久久综合亚洲精品| 亚洲精品久久久久中文字幕二区| 久久久久国产精品一区二区| 男人和女人做事情在线视频网站免费观看| 国产在线视频91| 亚洲r级在线视频| 外国成人激情视频| 天堂中文在线8| 91精品国产高清久久久久久91裸体 | 亚洲xxxxxx| 精品1区2区| 91精品国产综合久久久蜜臀图片| 亚洲国产精品第一区二区三区| 色婷婷综合久久久久| 成人av免费网站| 99精品国产九九国产精品| 91av资源网| 欧美性受xxxx白人性爽| 亚洲午夜激情av| 欧美午夜电影在线观看 | 日韩高清三级| 亚洲第一网站免费视频| 成人免费毛片a| 老司机aⅴ在线精品导航| 国产jizz| 91黄在线观看| 日韩欧美综合一区| 国产精品亚洲一区二区三区在线| 日韩成人一区| 亚洲久久中文字幕| 成人国产精品一区二区| 欧美日韩一区国产| 蜜芽一区二区三区| 国产95亚洲| 在线观看av网站| 色就是色欧美| 久久中国妇女中文字幕| 亚洲精品ww久久久久久p站| 国产在线欧美| 成人香蕉视频| 精品伦理一区二区| 日本在线成人一区二区| 久久综合久久88| 欧美日韩中国免费专区在线看| 日韩国产欧美在线视频| 日韩三级不卡| 91caoporm在线视频| 日本手机在线视频| 国产精品视频一区二区三区四 | 男女污视频在线观看| 亚洲国产日韩欧美| 久久久久久久香蕉网| 欧亚一区二区三区| 成人丝袜视频网| 日韩精品欧美激情一区二区| 女人黄色免费在线观看| 成人免费在线观看视频网站| 国产精品一区在线观看| 久久精品电影一区二区| 在线视频中文字幕一区二区| 高清不卡在线观看| 99精品网站| 美女网站视频一区| 日本一区二区三区在线观看视频| 综合网五月天| 成人黄色在线观看| 宅男66日本亚洲欧美视频| 五月婷婷激情综合网| 99久久久国产精品免费蜜臀| 欧美激情视频一区二区三区在线播放 | 欧美少妇在线观看| 国产精品一区二区久久久久|