none
实施并发优化 RRS feed

  • 问题

  • http://www.asp.net/data-access/tutorials学习“实施并发优化”一节“从ASP.NET页面向业务逻辑层方法传递原始值和新值”时,ProductOptimisticConcurrencyDataSource.aspx页面能够成功删除产品信息,却不能跟新产品信息,总有错误提示如下:

    ObjectDataSource"ProductOptimisticConcurrencyDataSource" 未找到带参数的泛型方法"UpdateProduct".

    请各位老师指教!

     

    2010年10月10日 5:15

答案

全部回复

  • 查看一下使用的这个泛型方法是否已经定义
    2010年10月10日 7:57
    版主
  • 已经定义好了呀!定义如下 [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Update, true)]
        public bool UpdateProduct( // new parameter values
            string productName, int? supplierID, int? categoryID, string quantityPerUnit, decimal? unitPrice,
            short? unitsInStock, short? unitsOnOrder, short? reorderLevel, bool discontinued, int productID,
            // original parameter values
            string original_productName, int? original_supplierID, int? original_categoryID, string original_quantityPerUnit,
            decimal? original_unitPrice, short? original_unitsInStock, short? original_unitsOnOrder,
            short? original_reorderLevel, bool original_discontinued, int original_productID)
        {
            // STEP 1: Read in the current database product information
            NorthwindOptimisticConcurrency.ProductsOptimisticConcurrencyDataTable products =
                Adapter.GetProductByProductID(original_productID);
            if (products.Count == 0) // no matching record found, return false
                return false;
            NorthwindOptimisticConcurrency.ProductsOptimisticConcurrencyRow product = products[0];
            // STEP 2: Assign the original values to the product instance
            AssignAllProductValues(product, original_productName, original_supplierID, original_categoryID, original_quantityPerUnit,
                original_unitPrice, original_unitsInStock, original_unitsOnOrder, original_reorderLevel, original_discontinued);
            // STEP 3: Accept the changes
            product.AcceptChanges();
            // STEP 4: Assign the new values to the product instance
            AssignAllProductValues(product, productName, supplierID, categoryID, quantityPerUnit, unitPrice, unitsInStock,
                unitsOnOrder, reorderLevel, discontinued);
            // STEP 5: Update the product record
            int rowsAffected = Adapter.Update(product);
            // Return true if precisely one row was updated, otherwise false
            return rowsAffected == 1;
        }

    2010年10月11日 2:51
  • 这个不是泛型方法
    2010年10月11日 7:40
    版主
  • 呵呵!问题找到了,数据库没有设置主键!谢谢楼上的兄弟和苏鹏老师
    • 已标记为答案 xuefliang 2010年10月14日 1:56
    2010年10月12日 0:59