示例#1
0
        /// <summary>
        /// ������Ʒ����
        /// </summary>
        /// <param name="oParam"></param>
        public void UpdateAttribute2(int paramProductSysNo, Hashtable htText, Hashtable htOption)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {

                Hashtable ht_Old = GetProductAttribute2Value(paramProductSysNo);
                ProductAttributeDac pa = new ProductAttributeDac();

                foreach (string key in htText.Keys)
                {
                    ProductAttribute2Info oParam = new ProductAttribute2Info();
                    oParam.ProductSysNo = paramProductSysNo;
                    oParam.Attribute2SysNo = int.Parse(key);
                    oParam.Attribute2Value = htText[key].ToString();
                    oParam.Attribute2OptionSysNo = 0;  //default value is 0

                    if (ht_Old != null && ht_Old.Count > 0 && ht_Old.ContainsKey(key))
                    {
                        pa.Update(oParam);
                    }
                    else
                    {
                        pa.Insert(oParam);
                    }
                }

                foreach (string key in htOption.Keys)
                {
                    ProductAttribute2Info oParam = new ProductAttribute2Info();
                    oParam.ProductSysNo = paramProductSysNo;
                    oParam.Attribute2SysNo = int.Parse(key);
                    oParam.Attribute2OptionSysNo = int.Parse(htOption[key].ToString());
                    oParam.Attribute2Value = ""; // default value is ""

                    if (ht_Old != null && ht_Old.Count > 0 && ht_Old.ContainsKey(key))
                    {
                        pa.Update(oParam);
                    }
                    else
                    {
                        pa.Insert(oParam);
                    }
                }

                if (ht_Old != null && ht_Old.Count > 0)
                {
                    foreach (string key in ht_Old.Keys)
                    {
                        if (!htText.ContainsKey(key) && !htOption.ContainsKey(key))
                        {
                            pa.DeleteProductAttribute2(paramProductSysNo, Util.TrimIntNull(key));
                        }
                    }
                }

                scope.Complete();
            }
        }