博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题
阅读量:6282 次
发布时间:2019-06-22

本文共 2011 字,大约阅读时间需要 6 分钟。

namespace Entity 

{
 
    /// <summary> 
    /// 自定义主键编码 
    /// </summary> 
    public enum PkIdRecordCode 
    {
 
        /// <summary> 
        /// OrderID 
        /// </summary> 
        OR = 10, 
        /// <summary> 
        /// ProductID 
        /// </summary> 
        PR = 30, 
        /// <summary> 
        /// StoreID 
        /// </summary> 
        ST = 40, 
        /// <summary> 
        /// UserID 
        /// </summary> 
        US = 20, 
    } 
    /// <summary> 
    /// 含有自增主键性质的表枚举 
    /// </summary> 
    public enum PKIDTable 
    {
 
        /// <summary> 
        ///     地区信息 
        /// </summary> 
        Areas = 1, 
        /// <summary> 
        ///   银行信息 
        /// </summary> 
        BankInfos = 2, 
        /// <summary> 
        /// 商品虚拟分类属性 
        /// </summary> 
        CategoryPropertys = 3,

    }

}

        /// <summary> 

        /// 代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题 
        /// </summary> 
        /// <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 
                {
 
                    transactionScope.Dispose(); 
                } 
            } 
        } 
       
  /// <summary> 
        /// 一些特殊的主键,需要有固定的位数,当位数的数字不够时,在前面补0 
        /// </summary> 
        /// <param name="code"></param> 
        /// <returns></returns> 
        public string GetNewID(Entity.PkIdRecordCode code) //由后后台也要建立用户,所以把它改为public -zhangzhanling 
        {
 
            string _code = null;

            int idNum = 0; 

            using (TransactionScope transactionScope = new TransactionScope()) 
            {
 
                try 
                {
 
                    _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(); 
                    transactionScope.Complete(); 
                    transactionScope.Dispose(); 
                    return string.Format("{0}{1}", (int)code, idNum.ToString().PadLeft(6, '0')); 
                } 
                catch (Exception ex) 
                {
 
                    throw ex; 
                } 
                finally 
                {
 
                    transactionScope.Dispose(); 
                } 
            } 
        }

数据库结构

本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
百度云盘demo
查看>>
概率论与数理统计习题
查看>>
初学structs2,简单配置
查看>>
Laravel5.0学习--01 入门
查看>>
时间戳解读
查看>>
sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied
查看>>
@RequestMapping 用法详解之地址映射
查看>>
254页PPT!这是一份写给NLP研究者的编程指南
查看>>
《Data Warehouse in Action》
查看>>
String 源码浅析(一)
查看>>
Spring Boot 最佳实践(三)模板引擎FreeMarker集成
查看>>
Fescar 发布 0.2.3 版本,支持 Redis 和 Apollo
查看>>
Google MapReduce到底解决什么问题?
查看>>
CCNP-6 OSPF试验2(BSCI)
查看>>
Excel 2013 全新的图表体验
查看>>
openstack 制作大于2TB根分区自动扩容的CENTOS镜像
查看>>
Unbuntu安装遭遇 vmware上的Easy install模式
查看>>
几个常用的ASP木马
查看>>
python分析postfix邮件日志的状态
查看>>
Mysql-5.6.x多实例配置
查看>>