代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题
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();
}
}
}
数据库结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示