天天看点

代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题

namespace Entity 

    /// <summary> 

    /// 自定义主键编码 

    /// </summary> 

    public enum PkIdRecordCode 

    { 

        /// <summary> 

        /// OrderID 

        /// </summary> 

        OR = 10, 

        /// ProductID 

        PR = 30, 

        /// StoreID 

        ST = 40, 

        /// UserID 

        US = 20, 

    } 

    /// 含有自增主键性质的表枚举 

    public enum PKIDTable 

        ///     地区信息 

        Areas = 1, 

        ///   银行信息 

        BankInfos = 2, 

        /// 商品虚拟分类属性 

        CategoryPropertys = 3,

    }

}

        /// 代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题 

        /// <param name="code"></param> 

        /// <returns></returns> 

        public int GetNewPKID(Entity.PKIDTable code) //由后后台也要建立用户,所以把它改为public -zhangzhanling 

        { 

            string _code = null;

            int idNum = 0; 

            using (TransactionScope transactionScope = new TransactionScope()) 

            { 

                try 

                { 

                    _code = Enum.GetName(typeof(Entity.PKIDTable), code); 

                    idNum = base._db.ExecuteQuery<int>("UPDATE PkIdTable SET IDNum= IDNum+1 WHERE Code={0};select IDNum from PkIdTable WHERE Code = {0}", _code).Single(); 

                    transactionScope.Complete(); 

                    transactionScope.Dispose(); 

                    return idNum; 

                } 

                catch (Exception ex) 

                    throw ex; 

                finally 

            } 

        } 

  /// <summary> 

        /// 一些特殊的主键,需要有固定的位数,当位数的数字不够时,在前面补0 

        public string GetNewID(Entity.PkIdRecordCode code) //由后后台也要建立用户,所以把它改为public -zhangzhanling 

                    _code = Enum.GetName(typeof(Entity.PkIdRecordCode), code); 

                    idNum = base._db.ExecuteQuery<int>("UPDATE PkIdRecords SET IDNum= IDNum+1 WHERE Code={0};select IDNum from PkIdRecords WHERE Code = {0}", _code).Single(); 

                    return string.Format("{0}{1}", (int)code, idNum.ToString().PadLeft(6, '0')); 

        }

数据库结构