ASP.NET 2.0数据操作之创建业务逻辑层
(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块,就像下面的示例一样:
我们将在后面的教程中看到,当通过一个数据Web控件(data Web Control)来进行插入、修改或删除操作数据时,处理从BLL中抛出的异常可以直接在一个Event Handler中进行,而不需要使用try…catch块来包装代码。 总结 一个具有良好架构的应用程序都拥有清晰的层次结构,每一个层次都封装了一个特定的角色。在本教程的第一篇中,我们用类型化数据集创建了一个数据访问层;这一篇中,我们又建立了一个业务逻辑层,它由App_Code中一系列的类构成,并调用DAL中相应的方法。BLL为我们的应用程序实现了字段级和业务级的逻辑。除了创建一个独立的BLL,就像我们在本节中所做的那样,另外一个选择是使用partial类来扩展TableAdapter中的方法。然而,使用这个技术并不能使我们可以重写已经存在的方法,也不能将我们的DAL和BLL分开得足够清晰。 完成了DAL和BLL之后,我们就准备开始处理表示层了。在下一个教程中,我们将简单的介绍一些数据访问的主题,并为整个教程定义一个一 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |