快速业务通道

ASP.NET 2.0数据操作之创建业务逻辑层

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
(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}
39

在表示层中响应验证错误

当我们从表示层中调用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, null, null, false, 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之后,我们就准备开始处理表示层了。在下一个教程中,我们将简单的介绍一些数据访问的主题,并为整个教程定义一个一

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号