快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
urn rowsAffected == 1;
75 }
76
77 [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
78 public bool UpdateProduct(string productName, int? supplierID, int? categoryID, string quantityPerUnit,
79 decimal? unitPrice, short? unitsInStock, short? unitsOnOrder, short? reorderLevel,
80 bool discontinued, int productID)
81 {
82 Northwind.ProductsDataTable products = Adapter.GetProductByProductID(productID);
83 if (products.Count == 0)
84 // 没有找到匹配的记录,返回false
85 return false;
86
87 Northwind.ProductsRow product = products[0];
88
89 product.ProductName = productName;
90 if (supplierID == null) product.SetSupplierIDNull(); else product.SupplierID = supplierID.Value;
91 if (categoryID == null) product.SetCategoryIDNull(); else product.CategoryID = categoryID.Value;
92 if (quantityPerUnit == null) product.SetQuantityPerUnitNull(); else product.QuantityPerUnit = quantityPerUnit;
93 if (unitPrice == null) product.SetUnitPriceNull(); else product.UnitPrice = unitPrice.Value;
94 if (unitsInStock == null) product.SetUnitsInStockNull(); else product.UnitsInStock = unitsInStock.Value;
95 if (unitsOnOrder == null) product.SetUnitsOnOrderNull(); else product.UnitsOnOrder = unitsOnOrder.Value;
96 if (reorderLevel == null) product.SetReorderLevelNull(); else product.ReorderLevel = reorderLevel.Value;
97 product.Discontinued = discontinued;
98
99 // 更新产品记录
100 int rowsAffected = Adapter.Update(product);
101
102 // 如果刚好更新了一条记录,则返回true,否则返回false
103 return rowsAffected == 1;
104 }
105
106 [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Delete, true)]
107 public bool DeleteProduct(int productID)
108 {
109 int rowsAffected = Adapter.Delete(productID);
110
111 // 如果刚好删除了一条记录,则返回true,否则返回false
112 return rowsAffected == 1;
113 }
114}
115

GetProducts、GetProductByProductID、GetProductsByCategoryID以及 GetProductBySuppliersID等方法都仅仅是简简单单的直接调用DAL中的方法来返回数据。不过在有的情况下,我们还可能需要给它们实现一些业务规则(比如说授权规则,不同的用户或不用角色应该可以看到不同的数据),现在我们简单的将它们做成这样就可以了。那么,对于这些方法来说,BLL仅仅是作为表示层与DAL之间的代理。

AddProduct和UpdateProduct这两个方法都使用参数中的那些产品信息去添加或是更新一条产品记录。由于Product表中有许多字段都允许空值(CategoryID、SupplierID、UnitPrice……等等),所以AddProduct和UpdateProduct中相应的参数就使用nullable types。Nullable types是.NET 2.0中新提供的一种用于标明一个值类型是否可以为空的技术。在C#中,你可以在一个允许为空的值类型后面加上一个问号(比如,int x;)。关于Nullable Types的详细信息,你可以参考C# Programming Guide。

由于插入、修改和删除可能不会影响任何行,所以这三种方法均返回一个bool值用于表示操作是否成功。比如说,页面开发人员使用一个并不存在的ProductID去调用DeleteProduct,很显然,提交给数据库的DELETE语句将不会有任何作用,所以DeleteProduct会返回false。

注意:当我们在添加或更新一个产品的详细信息时,都是接受

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号