
创建业务逻辑层步骤.docx
31页n更多企业业学院::《中小企企业管理理全能版版》183套套讲座++897700份份资料《总经理理、高层层管理》49套讲讲座+1163888份资料《中层管管理学院院》46套讲讲座+660200份资料 《国学智智慧、易易经》46套讲讲座《人力资资源学院院》56套讲讲座+2271223份资料《各阶段段员工培培训学院院》77套讲讲座+ 3244份资料《员工管管理企业业学院》67套讲讲座+ 87220份资料《工厂生生产管理理学院》52套讲讲座+ 139920份份资料《财务管管理学院院》53套讲讲座+ 179945份份资料 《销售经经理学院院》56套讲讲座+ 143350份份资料《销售人人员培训训学院》72套讲讲座+ 48779份资料简介在教程一一中创建建的数据据访问层层 (DDAL)) 将数数据访问问逻辑与与表示逻逻辑清晰晰地分离离开来然然而,尽尽管 DDAL 从表示示层中清清晰地分分离出数数据访问问层细节节,它却却并没有有实施任任何可能能采用的的业务规规则例例如,我我们想让让我们的的应用程程序在 Dissconntinnuedd 字段段设为 1 时时禁止对对 Prroduuctss 表的的 CaateggoryyID 或 SSuppplieerIDD 字段段的修改改,还有有,我们们可能想想实施一一些资历历规则以以便禁止止发生这这样的情情况:雇雇员被其其后入职职的另一一雇员所所管理。
另另一种常常见的情情形是授授权 –– 可能能只有处处于特定定职位的的用户可可以删除除产品或或更改 UniitPrricee 值通过本教教程,我我们可以以了解怎怎样将业业务规则则集中到到在表示示层与DDAL 之间充充当数据据交互中中介的业业务逻辑辑层 ((BLLL) 中中在真真实的应应用程序序中,BBLL 应作为为一个单单独的类类库项目目而实现现然而而,为了了简化项项目结构构,在这这些教程程中,我我们以 Appp_Coode 文件夹夹下的一一系列的的类来实实现 BBLL 图 1 展展示了表表示层、BBLL 和 DDAL 之间的的结构关关系图1 ::BLLL 将表表示层与与数据访访问层分分隔开来来并且实实施业务务规则步骤1 :创建建 BLLL 类类我们的BBLL 将由四四个类组组成,分分别对应应 DAAL 中中不同的的 TaableeAdaapteer 每每个 BBLL 类都具具有一些些方法,这这些方法法可以从从 DAAL 中中该类对对应的 TabbleAAdappterr 中检检索、插插入、更更新或删删除数据据并应用用相应的的业务规规则为了更清清楚地区区分 DDAL 的相关关类与 BLLL 的相相关类,我我们在 Appp_Coode 文件夹夹下创建建两个子子文件夹夹:DAAL 和和 BLLL 。
创创建时,只只需右健健单击 Sollutiion Expplorrer 中的 Appp_Coode 文件夹夹并选择择 Neew FFoldder 创建建了这两两个文件件夹后,将将教程一一中创建建的 TTypeed DDataaSett 移动动到 DDAL 子文件件夹中然后,在在BLLL 子文文件夹中中创建四四个 BBLL 类文件件为此此,右键键单击 BLLL 子文文件夹,选选择 AAdd a NNew Iteem ,然然后选择择 Cllasss 模板板将这这四个类类分别命命名为 ProoducctsBBLL 、 CCateegorriessBLLL 、 SupppliierssBLLL 和 EmpployyeessBLLL 图2 ::在Appp_CCodee 文件件夹中添添加四个个新类接下来让让我们在在每个类类中添加加一些方方法,这这些方法法只是简简单地封封装教程程一中为为TabbleAAdappterrs 定定义的方方法目目前,这这些方法法只是对对 DAAL 中中内容的的直接调调用,稍稍后我们们会返回回到这些些方法中中来添加加任何所所需的业业务逻辑辑注意: 如果您您当前使使用的是是Vissuall Sttudiio SStanndarrd EEdittionn 或以以上版本本 ( 即,当当前使用用的不是是Vissuall Weeb DDeveelopper ),您您可以使使用 以可视视的方式式随意设设计自己己的类。
有有关 VVisuual Stuudioo 中该该新特性性的详细细信息,请请参见 对于PrroduuctssBLLL 类,总总共需要要添加七七个方法法 :· GetPProdductts()) – 返回所所有产品品· GetPProdducttByPProdducttID((prooducctIDD) –– 返回回具有指指定产品品 IDD 的产产品· GetPProdducttsByyCattegooryIID(ccateegorryIDD) –– 返回回指定 种类 中的所所有产品品· GetPProdducttsByySupppliier((supppliierIID) – 返返回来自自指定供供应商的的所有产产品· AddPProdductt(prroduuctNNamee, ssuppplieerIDD, ccateegorryIDD, uanntittyPeerUnnit,, unnitPPricce, uniitsIInSttockk, uunittsOnnOrdder,, reeordderLLeveel, dissconntinnuedd) –– 通过过传入值值将一个个新产品品插入到到数据库库中 ;; 返回回新插入入记录的的 PrroduuctIID 值值。
· UpdaatePProdductt(prroduuctNNamee, ssuppplieerIDD, ccateegorryIDD, uanntittyPeerUnnit,, unnitPPricce, uniitsIInSttockk, uunittsOnnOrdder,, reeordderLLeveel, dissconntinnuedd, pprodducttID)) – 通过传传入值更更新数据据库中的的一个现现有产品品 ; 如果正正好更新新了一行行则返回回 trrue , 否否则返回回 faalsee · DeleetePProdductt(prroduuctIID) – 从从数据库库中删除除指定产产品ProdducttsBLLL.ccsusinng SSysttem;;usinng SSysttem..Datta;usinng SSysttem..Connfigguraatioon;usinng SSysttem..Webb;usinng SSysttem..Webb.Seecurrityy;usinng SSysttem..Webb.UII;usinng SSysttem..Webb.UII.WeebCoontrrolss;usinng SSysttem..Webb.UII.WeebCoontrrolss.WeebPaartss;usinng SSysttem..Webb.UII.HttmlCConttrolls;usinng NNortthwiindTTablleAddaptterss;[Sysstemm.CoompoonenntMoodell.DaataOObjeect]]publlic claass ProoducctsBBLL{ priivatte PProdducttsTaableeAdaapteer __prooducctsAAdappterr = nulll; prootecctedd PrroduuctssTabbleAAdappterr Addaptter { geet {{ iif ((_prroduuctssAdaapteer === nnulll) _prroduuctssAdaapteer == neew PProdducttsTaableeAdaapteer()); rretuurn _prroduuctssAdaapteer; } } [Syysteem.CCompponeentMModeel.DDataaObjjecttMetthoddAtttribbutee (SSysttem..CommponnenttModdel..DattaObbjecctMeethoodTyype..Sellectt, ttruee)] pubblicc Noorthhwinnd.PProdducttsDaataTTablle GGetPProdductts()) { reeturrn AAdappterr.GeetPrroduuctss();; } [Syysteem.CCompponeentMModeel.DDataaObjjecttMetthoddAtttribbutee (SSysttem..CommponnenttModdel..DattaObbjecctMeethoodTyype..Sellectt, ffalsse)]] pubblicc Noorthhwinnd.PProdducttsDaataTTablle GGetPProdducttByPProdducttID((intt prroduuctIID) { reeturrn AAdappterr.GeetPrroduuctBByPrroduuctIID(pprodducttID)); } [Syysteem.CCompponeentMModeel.DDataaObjjecttMetthoddAtttribbutee (SSysttem..CommponnenttModdel..DattaObbjecctMeethoodTyype..Sellectt, ffalsse)]] pubblicc Noorthhwinnd.PProdducttsDaataTTablle GGetPProdducttsByyCattegooryIID(iint cattegooryIID) { reeturrn AAdappterr.GeetPrroduuctssByCCateegorryIDD(caateggoryyID)); } [Syysteem.CCompponeentMModeel.DDataaObjjecttMetthoddAtttribbutee (SSysttem..CommponnenttModdel..DattaObbjecctMeethoodTyype..Sellectt, ffalsse)]] pubblicc Noorthhwinnd.PProdducttsDaataTTablle GGetPProdducttsByySupppliierIID(iint supppliierIID) { reeturrn AAdappt。












