111,096
社区成员




public bool UpdateProduct(string productName, int? supplierID, int? categoryID, string quantityPerUnit,
decimal? unitPrice, short? unitsInStock, short? unitsOnOrder, short? reorderLevel,
bool discontinued, int productID)
{
Northwind.ProductsDataTable products = Adapter.GetProductByProductID(productID);
if (products.Count == 0)
// 根据productID查找时,没有找到匹配项,返回false
return false;
// product 即表示 Product 表中的一条记录
Northwind.ProductsRow product = products[0];
// 业务规则检查 – 不能停用某供应商所提供的唯一一个产品
if (discontinued)
{
// 获取我们从这个供应商处获得的所有产品
Northwind.ProductsDataTable productsBySupplier = Adapter.GetProductsBySupplierID(product.SupplierID);
if (productsBySupplier.Count == 1)
// 这是我们从这个供应商处获得的唯一一个产品,如果仅仅供应 1 个产品,则抛出异常
throw new ApplicationException("You cannot mark a product as discontinued if its the only product purchased from a supplier");
}
product.ProductName = productName;
if (supplierID == null) product.SetSupplierIDNull(); else product.SupplierID = supplierID.Value;
if (categoryID == null) product.SetCategoryIDNull(); else product.CategoryID = categoryID.Value;
if (quantityPerUnit == null) product.SetQuantityPerUnitNull(); else product.QuantityPerUnit = quantityPerUnit;
if (unitPrice == null) product.SetUnitPriceNull(); else product.UnitPrice = unitPrice.Value;
if (unitsInStock == null) product.SetUnitsInStockNull(); else product.UnitsInStock = unitsInStock.Value;
if (unitsOnOrder == null) product.SetUnitsOnOrderNull(); else product.UnitsOnOrder = unitsOnOrder.Value;
if (reorderLevel == null) product.SetReorderLevelNull(); else product.ReorderLevel = reorderLevel.Value;
product.Discontinued = discontinued;
// 更新产品记录
int rowsAffected = Adapter.Update(product);
// 如果刚好更新了一条记录,则返回true,否则返回false
return rowsAffected == 1;
}